====== 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