Speedtest CLI. Run speedtest on pfSense box
-
@joeontherun Nice work! Just duplicate what you did for your "Speed Checker" graph. Create the graphs on Thingspeak, create the .inc files pointing to the links and the .php widgets! Then smile! Can help as needed, but I think you got it! :)
-
The link for how to make a widgit with speed test is dead.
Anyone have a instruction for how to get speedtest in the GUI?
-
@justheretohelp
Create speedtest.inc in /usr/local/www/widgets/include
This will add the Speedtest entry to the pfSense Dashboard widget choices.<?php /* File : /usr/local/www/widgets/include/speedtest.inc * Author : Zak Ghani * Date : 10-03-2019 * * This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, either express or implied. * */ $Download_title = gettext("Speedtest - Mbps"); ?>
Then create speedtest.widget.php in /usr/local/www/widgets/widgets
<?php /* File : /usr/local/www/widgets/widgets/speedtest.widget.php * Author : Zak Ghani * Date : 10-03-2019 * * This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, either express or implied. * * URL Choices : https://www.bing.com/widget/t/speedtest * https://www.measurementlab.net/p/ndt-ws.html */ require_once("guiconfig.inc"); ?> <iframe src="https://www.bing.com/widget/t/speedtest" width="498" height="500" frameborder="0" > </iframe>
When you copy the code, be sure to get it all, the windows scrolls. You may need to mess with the pixel height/width of the object.
Think that's it... -
Sorry about the dead links. In the middle of moving websites. @provels has it spot on coding wise.
Should be able to get the instructions back on line within the next few days. -
@RaidArray Are those instructions back up online somewhere by chance?
-
Hi,
this long discussion was nearly wat I'm locking for.
But in the end I build it on my own...and maybe someone is interested in this. Here is what I did:
I have mounted a USB drive (not really necessary for everybody) and build a script that can called by cron.
This script is parsing the response from speedtest-cli on directly on the WAN interface and writes a log file. From this log file I took the last 7 lines (cron is running every day) and create a /usr/local/www/js/speettest_cli.js as data file for my chart from https://www.chartjs.org.
And here is the result:
The tooltip is a mouse over and you can also hide single elements like this:
The fact that you see only the 03.03. and 04.03. is that I created yesterday and these are just placeholder until the new data arrived.Here you can finde all files.
Feel free to use it. Think everyone have to adapt all the paths in the \usr\local\bin\speedtest.sh
Also in this file you have to set you place for the speedtest...like speedtest-cli --server 16688Cheers
MarcO -
Does anyone have the speedtest.py still? I can't seem to find it.
-
@lastb0isct Have you tried...
# pkg search speedtest # pkg install py27-speedtest-cli
if
pkg
gives you aShared object "libcryptoauth.so.3" not found, required by "pkg"
error, try# pkg-static install py27-speedtest-cli
-
@lastb0isct said in Speedtest CLI. Run speedtest on pfSense box:
Does anyone have the speedtest.py still? I can't seem to find it.
It comes with the package when you install it. SSH to your box and run:
pkg search speedtest [2.4.4-RELEASE][root@fw.workgroup]/root: pkg search speedtest py37-speedtest-cli-2.1.1 Command line interface for testing internet bandwidth
Then run
pkg install py37-speedtest-cli-2.1.1
Have fun!
-
Where does the speedtest.py live after installation?
-
@lastb0isct said in Speedtest CLI. Run speedtest on pfSense box:
Where does the speedtest.py live after installation?
/usr/local/lib/python3.7/site-packages
-
Run
pkg search speedtest
py37-speedtest-cli-2.1.1 Command line interface for testing internet bandwidth
We can now see the package we need to install
pkg install py37-speedtest-cli-2.1.1
then run with
/usr/local/bin/speedtest
-
I've created a widget to run speedtest directly from your pfSense dashboard
https://github.com/aln-1/pfsense-speedtest-widget -
@aln Hey, it works! Nice job! :)
-
Pretty slick.. Nice work..
Not really a fan of running speedtest on pfsense itself, its always better to do them "thru" pfsense (from a client behind).. But yeah could see how it could come in handy for some.
Allowing for some settings, like picking server, etc.. would be even extra slick ;)
2.4.5-RELEASE][admin@sg4860.local.lan]/: speedtest -h usage: speedtest [-h] [--no-download] [--no-upload] [--single] [--bytes] [--share] [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] Command line interface for testing internet bandwidth using speedtest.net. -------------------------------------------------------------------------- https://github.com/sivel/speedtest-cli optional arguments: -h, --help show this help message and exit --no-download Do not perform download test --no-upload Do not perform upload test --single Only use a single connection instead of multiple. This simulates a typical file transfer. --bytes Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv --share Generate and provide a URL to the speedtest.net share results image, not displayed with --csv --simple Suppress verbose output, only show basic information --csv Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes --csv-delimiter CSV_DELIMITER Single character delimiter to use in CSV output. Default "," --csv-header Print CSV headers --json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes --list Display a list of speedtest.net servers sorted by distance --server SERVER Specify a server ID to test against. Can be supplied multiple times --exclude EXCLUDE Exclude a server from selection. Can be supplied multiple times --mini MINI URL of the Speedtest Mini server --source SOURCE Source IP address to bind to --timeout TIMEOUT HTTP timeout in seconds. Default 10 --secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers --no-pre-allocate Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with insufficient memory, use this option to avoid a MemoryError --version Show the version number and exit [2.4.5-RELEASE][admin@sg4860.local.lan]/:
-
-
Thank you very much, @aln!
I don't know why this isn't a stock package. Speed test on a router is a must. Thank you ever so much. This is by far my most needed package and you have just made my dreams come true.
To show my appreciation, I'd like to contribute some easy-install instructions. This short script does what you said to do. It won't install the widget if the pkg install fails. This can be run from the Diagnostics> Command Prompt > Execute Shell Command
pkg update ; pkg install -y py37-speedtest-cli && curl -o /usr/local/www/widgets/widgets/speedtest.widget.php https://raw.githubusercontent.com/aln-1/pfsense-speedtest-widget/master/speedtest.widget.php
Please consider further development, making this an official pFSense package. I'm very happy this is now a thing and thank you ever so much.
After hitting the refresh button, it comes up blank and never shows my results. I have to refresh the page to see the results. Any ideas?
-
@adamoutler when hitting the refresh button did it finish spinning? Can you see if there are any warning or errors in the browser's developer tools?
The widget will show an empty image initially and will cache the last speedtest results. You will be able to see them for as long as Ookla is caching them, as far as I can say this is forever. -
FWIW, when I ran it the second time, I also got an empty box, but every subsequent run it went fine. I just hit the chasing arrows again.
-
I get some positive feedbacks and that's nice.
This was really quick and dirty widget. Maybe I'll take it a step further.
I'll keep you posted.