====== Speedtest ====== ===== speedtest-cli ===== Установка в CentOS # yum install python-pip # pip install speedtest-cli Установка в Debian # apt-get nstall python-pip # pip install speedtest-cli Обновление # pip install speedtest-cli --upgrade Help # speedtest-cli --help usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list] [--server SERVER] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--secure] [--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 --bytes Display values in bytes instead of bits. Does not affect the image generated by --share --share Generate and provide a URL to the speedtest.net share results image --simple Suppress verbose output, only show basic information --list Display a list of speedtest.net servers sorted by distance --server SERVER Specify a server ID to test against --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 --version Show the version number and exit Проверка # speedtest-cli Testing from 2com (188.x.y.z)... Selecting best server based on latency... Hosted by VL-Telecom Ltd (Odintsovo) [12.90 km]: 6.25 ms Testing download speed........................................ Download: 189.45 Mbit/s Testing upload speed.................................................. Upload: 153.55 Mbit/s Поделиться результатом, ключ −−share [root@localhost ~]# speedtest-cli --share Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from 2com (188.x.y.z)... Selecting best server based on latency... Hosted by Beeline (Moscow) [15.29 km]: 6.665 ms Testing download speed........................................ Download: 190.77 Mbit/s Testing upload speed.................................................. Upload: 144.92 Mbit/s Share results: http://www.speedtest.net/result/4917045704.png {{:web:speedtest_2kom.png?nolink|}} Вывести минимум инфы, ключ −−simple # speedtest-cli --simple Ping: 6.166 ms Download: 193.04 Mbit/s Upload: 168.93 Mbit/s Посмотреть доступные серверы в Москве # speedtest-cli --list | grep Moscow 3682) Rostelecom (Moscow, Russian Federation) [15.44 km] 1907) MTS (Moscow, Russian Federation) [15.44 km] 6386) Megafon (Moscow, Russian Federation) [15.44 km] 4718) Beeline (Moscow, Russia) [15.44 km] 6325) OAO Transtelecom (Moscow, Russian Federation) [15.44 km] 6053) MaximaTelecom (Moscow, Russian Federation) [15.44 km] 4984) CLN (Moscow, Russian Federation) [15.44 km] 6827) MGTS (Moscow, Russian Federation) [15.44 km] 6985) CIFRA1 (Moscow, Russian Federation) [15.44 km] 4381) LLC "SouthNets" (Moscow, Russian Federation) [15.44 km] 5201) NK-NET (Moscow, Russia) [15.44 km] 4472) Dataline Ltd (Moscow, Russia) [15.44 km] 6562) Tele2 Russia (Moscow, Russian Federation) [15.44 km] 5581) Retn SJC (Moscow, Russian Federation) [15.44 km] 2322) RuTube (Moscow, Russian Federation) [15.44 km] 6307) AVK Komputer ltd. (Moscow, Russian Federation) [15.44 km] 5040) Alfa Net Telecom (Moscow, Russian Federation) [15.44 km] 5580) H1 LLC (Moscow, Russian Federation) [15.44 km] 7531) Net By Net Holding LLC (Moscow, Russian Federation) [15.44 km] Посмотреть доступные серверы в России # speedtest-cli --list | grep Russia Возьмем для проверки сервер MIPT-Telecom, его код 874 # speedtest-cli --server 874 Если у вас есть свой Speedtest mini сервер, то можно указать для проверки и его # speedtest-cli --mini http://speedtest.foobar.com ===== Автоматическое обновление Speedtest Mini на сервере ===== Самый простой вариант выглядит так Добавляем в ''/etc/cron.monthly/speedtest.sh'' #!/bin/sh rm /tmp/mini.zip curl --output /tmp/mini.zip http://c.speedtest.net/mini/mini.zip cd /tmp unzip mini.zip rm -rf /var/www/html/speedtest mv mini /var/www/html/speedtest mv /var/www/html/speedtest/index-php.html /var/www/html/speedtest/index.php или так #!/bin/bash cd /var/tmp/ wget http://c.speedtest.net/mini/mini.zip unzip -o mini.zip -d /var/www/speedtest.site.ru/ rm -f mini.zip Варианты чуть посложнее via https://gist.github.com/sparanoid/abb6e26d968accef9aa2 #!/usr/bin/env bash # Speedtest.net Auto Update Script # Usage: Download the latest SpeedTest script monthly as in 1st of every month at 00:00 # 0 0 1 * * nice -n 19 bash /srv/www/speedtest.sh >/dev/null 2>&1 # Make sure speedtest.sh is executable # chmod +x /srv/www/speedtest.sh DES_PATH=/usr/share PUB_PATH=/srv/www/speedtest.tokyo.sparanoid.com/public_html ST_DIR=speedtest wget http://c.speedtest.net/mini/mini.zip -O $DES_PATH/$ST_DIR.zip --limit-rate=200000k unzip -o $DES_PATH/$ST_DIR.zip -d $DES_PATH/$ST_DIR # Remove old public files rm -rf $PUB_PATH/$ST_DIR # Link from private directory to $ST_DIR in public directory ln -sf $DES_PATH/$ST_DIR/mini $PUB_PATH/$ST_DIR # Rename index-php.html to index.php mv $DES_PATH/$ST_DIR/mini/index-php.html $DES_PATH/$ST_DIR/mini/index.php \\ via http://www.purple.org.ua/speedtest-mini-auto-update/ cat /opt/speedtest/update.bash #!/bin/bash cd /opt/speedtest/ strPathToWebRoot=”/path/to/speedtest/webroot/” echo “Downloading Archive” wget http://files.speedtest.ookla.com/releases/mini.zip echo “Removing Past scripts” rm -rf $strPathToWebRoot echo “Unzipping” unzip mini.zip -d $strPathToWebRoot echo “Removing Archive” rm -f mini.zip echo “Renaming index script” mv $strPathToWebRoot/index-php.html $strPathToWebRoot/index.html echo “Done” \\ via https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/speedtest-mini-update.sh #!/bin/bash # # Check Speedtest Mini expiration time and update it. # # VERSION :0.3.1 # DATE :2016-09-24 # AUTHOR :Viktor Szépe # LICENSE :The MIT License (MIT) # URL :https://github.com/szepeviktor/debian-server-tools # BASH-VERSION :4.2+ # DEPENDS :apt-get install swfmill unzip # LOCATION :/usr/local/bin/speedtest-mini-update.sh # CRON-WEEKLY :/usr/local/bin/speedtest-mini-update.sh echo "As of June 30, 2017 Speedtest Mini will no longer be available" 1>&2 echo "http://www.ookla.com/speedtest-custom" 1>&2 exit 100 # Set your document root MINI_PATH="/home/USER/website/html/speed" # Date-style expiration time MINI_EXPIRE="2 months ago" # http://www.speedtest.net/mini.php MINI_URL="http://c.speedtest.net/mini/mini.zip" Die() { local RET="$1" shift echo -e "$@" 1>&2 exit "$RET" } Check_expiration() { local MODIFY_DATE local -i MODIFY_SECONDS="0" local -i MONTH_AGO_SECONDS if hash swfmill 2> /dev/null && [ -f "${MINI_PATH}/speedtest.swf" ]; then MODIFY_DATE="$(swfmill -n -e latin1 swf2xml "${MINI_PATH}/speedtest.swf" 2> /dev/null \ | sed -n -e 's|^.*\(.*\).*$|\1|p')" if [ -n "$MODIFY_DATE" ]; then MODIFY_SECONDS="$(date --date "$MODIFY_DATE" "+%s" 2> /dev/null || echo 0)" fi fi MONTH_AGO_SECONDS="$(date --date="$MINI_EXPIRE" "+%s")" # Expired, return with the exit code [ "$MODIFY_SECONDS" -lt "$MONTH_AGO_SECONDS" ] } Update_mini() { local ZIP ZIP="$(basename "$MINI_URL")" # Limit the download speed (2 MB/s) wget -q --limit-rate=2m -O "${MINI_PATH}/${ZIP}" "$MINI_URL" || Die 1 "ZIP download" # Remove old files if [ -d "${MINI_PATH}/mini" ]; then rm -r "${MINI_PATH}/mini" || Die 2 "Failed to remove old files: ./mini" fi if [ -d "${MINI_PATH}/speedtest" ]; then rm -r "${MINI_PATH}/speedtest" || Die 3 "Failed to remove old files: ./speedtest" fi # Extract ZIP unzip -q "${MINI_PATH}/${ZIP}" -d "${MINI_PATH}/" || Die 4 "Extraction failed." rm "${MINI_PATH}/${ZIP}" || Die 5 "ZIP cannot be removed." # Deploy speedtest mini mv "${MINI_PATH}/mini/speedtest.swf" "${MINI_PATH}/" || Die 6 "Flash file cannot be moved in place." mv "${MINI_PATH}/mini/speedtest" "${MINI_PATH}/" || Die 7 "Payload files cannot be moved in place." mv "${MINI_PATH}/mini/crossdomain.xml" "${MINI_PATH}/" || Die 8 "crossdomain.xml cannot be moved in place." mv "${MINI_PATH}/mini/index-php.html" "${MINI_PATH}/index.php" || Die 9 "Index file cannot be moved in place." # Remove files for other platforms rm -r "${MINI_PATH}/mini" || Die 10 "Failed to remove unnecassary files." # Set permissions find "${MINI_PATH}" -type f -exec chmod -x "{}" ";" || Die 11 "Failed to turn off execution bit." } Check_expiration && Update_mini exit 0