Skip to content

Instantly share code, notes, and snippets.

@mbierman
Last active May 18, 2023 20:27
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mbierman/9ac6a35622ee5a0c631ed6f6ad74b722 to your computer and use it in GitHub Desktop.
Save mbierman/9ac6a35622ee5a0c631ed6f6ad74b722 to your computer and use it in GitHub Desktop.
Install Speedtest for firewalla
#!/bin/bash
# 2.1.0
# https://gist.github.com/mbierman/9ac6a35622ee5a0c631ed6f6ad74b722
# Put this script in ~/.firewalla/config/post_main.d in order to resinstall after upgrades
log=/data/fw_reboot.txt
if ! [ -w $log ] ; then
sudo touch $log
sudo chmod a+w $log
fi
rel=$(lsb_release -rs); echo $rel
app=speedtest
edate=$(date +'%a %b %d %H:%M:%S %Z %Y')
Cversion=$(curl https://www.speedtest.net/apps/cli | egrep -o '<a href="https://install.speedtest.net/app/cli/ookla-speedtest-([0-9]{1,}\.)+([0-9]{1,}\.)+([0-9]{1,})+-linux-x86_64.tgz">x86_64</a>' | cut -f3 -d "-")
install () {
# unalias apt
# unalias apt-get
# sudo apt update
# sudo apt-get install curl
# curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash
# sudo apt-get install speedtest
# sudo apt-get update -yq
# curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash
# sudo apt-get install -yq $app
# if (( $(echo "$rel < 19" | bc -l )); then
rel2=19
if [[ $(bc <<< "$rel < $rel2") -eq 1 ]]; then
echo "Rel is $rel. Install old way..."
file="/etc/apt/sources.list.d/speedtest.list"
[ -f "$file" ] && sudo sudo && /etc/apt/sources.list.d/speedtest.list && rm $file
export DEBIAN_FRONTEND=noninteractive
binary=ookla-speedtest-${Cversion}-linux-x86_64
sudo curl https://install.speedtest.net/app/cli/${binary}.tgz --output /data/${binary}.tgz
sudo gunzip /data/ookla-speedtest*.tgz
sudo tar -xvf /data/ookla-speedtest*.tar
cd /data
sudo rm ${binary}.tar speedtest.5 ${binary}.tar.z
else
echo "Rel is $rel. Install easy way..."
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
fi
echo -e "$edate $app instaleld!" | tee -a $log
}
if [ -x "/data/speedtest" ]; then
Iversion=$(/data/speedtest --version | grep Linux | sed -e 's|Speedtest by Ookla ||g' | cut -f1 -d" " | cut -f1-3 -d".")
if [ "$Iversion" = "$Cversion" ] ; then
install
echo -e "\n\n$app instaleld!\n bye"
exit
else
echo "updating speedtest"
install
exit
fi
else
echo "$app wasn't installed "
echo "installing..."
install
exit
fi
@mbierman
Copy link
Author

mbierman commented Mar 27, 2021

Want to have speedtest cli on Firewalla Gold or Firewalla Purple? This will tell you how fast your internet connection is right on Firewalla (no wifi or Ethernet involved) see this for additional info on Firewalla installation.

see also this script if you want to run speedtest and log results.

Firewalla will remove anything installed after upgrades so you can install a script to reinstall for you after firewalla upgrades and possibly reboots.

Log in to firewalla with ssh. Then type:
cd ~/.firewalla/config/post_main.d/

if no directory is found

mkdir ~/.firewalla/config/post_main.d/
cd ~/.firewalla/config/post_main.d/

Then save this script and make it executable using vi or nano. For example
sudo vi install_speedtest.sh

Copy/Paste this script at https://gist.github.com/mbierman/9ac6a35622ee5a0c631ed6f6ad74b722 and save and close.

This should give you a file at ~/.firewalla/config/post_main.d/install_speedtest.sh

Then change permissions and run it.

sudo chmod a+x install_speedtest.sh
~/.firewalla/config/post_main.d/install_speedtest.sh

I adapted this to run on my Firewalla Gold because anything that gets installed may get wiped on reboot. So this checks if speedtest is installed and installs it if it isn’t found.

This will now run every time firewalla boots or upgrades. If speedtest isn’t found, it will be installed.

Then you can run speedtest.

speedtest --interface=eth0

Or

speedtest --interface=eth1

if you have dual WAN and want to test WAN2

See also this script which will log your speedtests to a Google Sheet, a log file, or both.

@cstrat
Copy link

cstrat commented Mar 28, 2021

image

@cstrat
Copy link

cstrat commented Mar 29, 2021

Thanks for this script, I just installed it. Exactly what I needed, just hope they build it into the firewalla interface at some point 👍

@mbierman
Copy link
Author

You’re welcome! Glad you found it useful.

@mbierman
Copy link
Author

@chezdude2010
Copy link

Michael - I made some edits to the gist to add in automatic architecture detection and some cleanup on the unpacking portion. Let me know if you are interested in the edits and I can see about uploading them to the gist.

@mbierman
Copy link
Author

@chezdude2010 sure, great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment