Проверка скорости Интернета в Linux через консоль

Тут ситуация простая. К примеру у вас есть удаленный сервер с доступом по SSH (согласитесь случается :) или Linux дома и вы хотите проверить скорость вашего интернет соединения, увидев при этом точные цифры, в читабельном виде. В Linux это можно сделать используя разные программы и методы, так же можно проверять скорость соединения (даже если оно локальное) между двумя удаленными серверами, что тоже бывает полезным (к примеру мне часто приходилось это делать) мы рассмотрим и этот случай. Статья простая, рассчитана больше на новичков в Linux. Итак как проверить скорость соединения сервера с Интернетом через консоль читаем под катом.

Чем проверять?

Как говорилось выше, выполнить проверку можно разными способами и программами. Мы рассмотрим следующие:

  • wget
  • wput
  • axel
  • iperf
  • curl

Установка

Для Ubuntu/Debian/Centos/Fedora:

yum install lftp iperf axel wput wget curl
sudo apt-get install lftp iperf axel wput wget curl
yum install lftp iperf axel wput wget curl
sudo apt-get install lftp iperf axel wput wget curl

Далее вам понадобиться линка с файлов которую вы будете загружать, проверяя скорость. Можно пользоваться всем известным speedtest.net у них есть такая опция http://c.speedtest.net/mini/mini.zip

Или к примеру загружать ISO образы с сервера национальной библиотеки США, у них там скорость 15Gb на отдачу.

Использование lftp

Прикольная штука кстати, вот примеры использования:

lftp -e 'pget http://example.com/file.iso; exit; '
lftp -e 'pget http://speedtest.example.com/500M.bin; exit; '
lftp -e 'pget http://mirror.anl.gov/pub/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveCD.iso; exit; '
lftp -e 'pget http://example.com/file.iso; exit; '
lftp -e 'pget http://speedtest.example.com/500M.bin; exit; '
lftp -e 'pget http://mirror.anl.gov/pub/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveCD.iso; exit; '

Выглядит это вот так:
internet-speed-test

После выполнения команды вы увидите результат:

725617504 bytes transferred in 65 seconds (10.63M/s)
725617504 bytes transferred in 65 seconds (10.63M/s)

Можно проверить не только download но и upload.
Под рукой у вас должен быть ISO файл и ZIP >= 50Mb + файловый сервер:

lftp -u userName ftp.example.com -e 'put largecd1.avi; bye'
lftp -u userName,passWord ftp.example.com -e 'put largecd1.avi; bye'
lftp -u userName,passWord ftp.example.com -e 'put /path/to/large.iso; bye'
lftp -u userName ftp.example.com -e 'put largecd1.avi; bye'
lftp -u userName,passWord ftp.example.com -e 'put largecd1.avi; bye'
lftp -u userName,passWord ftp.example.com -e 'put /path/to/large.iso; bye'

Вот пример для моего сервера:

lftp -u admin ftp.linuxspace.org -e 'cd video; put /home/booch/Downloads/debian-testing-amd64-CD-1.iso; bye'
lftp -u admin ftp.linuxspace.org -e 'cd video; put /home/booch/Downloads/debian-testing-amd64-CD-1.iso; bye'

Выглядит это вот так:
lftp-ftp-upload-internet-connection-speedtest

Использование Wget

wget -O /dev/null http://mirror.anl.gov/pub/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveCD.iso
wget -O /dev/null http://mirror.anl.gov/pub/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveCD.iso

Выглядит это вот так:
internet-upload-test

Использование curl

С curl проверка делается как-то так:

curl -LO http://c.speedtest.net/mini/mini.zip ; rm mini.zip
curl -LO http://c.speedtest.net/mini/mini.zip ; rm mini.zip

Можно накатать мини скрипт:

#!/bin/sh
wget http://c.speedtest.net/mini/mini.zip ; rm mini.zip
## debian.unnet.nl is down...
#wget http://c.speedtest.net/mini/mini.zip ; rm mini.zip
#curl -LO http://c.speedtest.net/mini/mini.zip ; rm mini.zip
#!/bin/sh
wget http://c.speedtest.net/mini/mini.zip ; rm mini.zip
## debian.unnet.nl is down...
#wget http://c.speedtest.net/mini/mini.zip ; rm mini.zip
#curl -LO http://c.speedtest.net/mini/mini.zip ; rm mini.zip

Python Script TestSpeed

На Github можно так-же найти опенсоурсовский проект скрипта котороый умеет проверять аплоуд и доунлоу. С красивым выводом в консоль. Сам проект лежит вот тут https://github.com/Janhouse/tespeed

Запустить просто, качаем ZIP архив на свой сервер, распаковываем, ставим зависимости и погнали:

unzip tespeed-master.zip
aptitude install python2.7-lxml python-lxml
chmod +x tespeed.py
./tespeed.py
unzip tespeed-master.zip
aptitude install python2.7-lxml python-lxml
chmod +x tespeed.py
./tespeed.py

Выглядит это вот так:
forSite

Python Script Speedtest-Cli

На Github можно найти много полезных скриптов если покопаться. Вот еще скрипт https://github.com/sivel/speedtest-cli который в удобном виде проверяет скорость Интернета. Оба скрипта используют speedtest.net Кстати если вы фан опенсоурса и учитесь писать на Python то вы можете скачать эти скрипты и переписать, улучшить или просто изучить.

Запустить просто, качаем ZIP архив на свой сервер, распаковываем, ставим зависимости и погнали:

scp speedtest-cli-master.zip booch@10.0.0.150:~
unzip speedtest-cli-master.zip
cd speedtest-cli
chmod +x speedtest-cli
./speedtest-cli
scp speedtest-cli-master.zip [email protected]:~
unzip speedtest-cli-master.zip
cd speedtest-cli
chmod +x speedtest-cli
./speedtest-cli

Выглядит это вот так:
forSite2

iperf на десерт

Проверка скорости соединения между двумя серверами в локальной сети.
Тут все просто, на сервере:

iperf -s -B 202.54.1.1
iperf -s -B 202.54.1.1

На клиeнте:

iperf -c 202.54.1.1 -d -t 60 -i 10
iperf -c 202.54.1.1 -d -t 60 -i 10

Где:
-s : Запустить в серверном режиме.
-B IP : Привязать к IP
-c IP : Запуск в клинтском режиме плюс коннект к IP.
-d : Как это сказать, двусторонний тест что-ли (двунаправленный)
-t 60 : Время в секундах для передачи (обычно 10).
-i 10 : Пауза X секунд между репортами.

Плюс читаем ман.
Выглядит вывод так:
network-upload-download-throughput-rate