Как проверить скорость интернета через терминал?


468

Вместо того, чтобы заходить на такие сайты, как speedtest.net , я хочу проверить текущую скорость интернета с терминала в Ubuntu. Как я могу это сделать?


4
Результаты, полученные с помощью speedtest-cli, значительно ниже результатов, полученных с помощью speedtest.net speedtest-cli Загрузить 18,27 Мбит / с Загрузить 3,43 Мбит / с speedtest.net Загрузить 59,38 Мбит / с Загрузить 12,14 Мбит / с Я не могу Полагайте, что speedtest-cli в любом случае является действительным тестом скорости сети.

2
@ user375058: speedtest-cliИспользует те же серверы (и т. д.), что и SpeedTest.net. Вы должны рассмотреть speedtest-cliи www.speedtest.netбыть эквивалентным, просто с другим интерфейсом. Я был бы удивлен, если бы вы получили значительно разные результаты последовательно, если они оба используют один и тот же сервер. Если они не используют один и тот же сервер, то у вас нет оснований для сравнения. Наконец, мои результаты для обеих утилит варьируются в 2-4 раза от запуска к запуску. Я предлагаю вам протестировать 2-4 сервера, выполнить 3-4 прогона для каждого сервера и сравнить инструменты.
jvriesem

@ user375058: Я просто сделал то, что предложил. Смотрите ссылку в моем комментарии ниже для моих результатов.
jvriesem

1
sudo apt установить speedtest-
cli

Ответы:


753

Я рекомендую для этого инструмент speedtest-cli . Я создал пост в блоге ( Измерение скорости интернет-соединения из командной строки Linux ), в котором подробно рассматриваются его загрузка, установка и использование.

Краткая версия: (без рута)

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

Выход:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Comcast Cable (x.x.x.x)...
Selecting best server based on ping...
Hosted by FiberCloud, Inc (Seattle, WA) [12.03 km]: 44.028 ms
Testing download speed........................................
Download: 32.29 Mbit/s
Testing upload speed..................................................
Upload: 5.18 Mbit/s

Обновление в 2018 году:

Использование pip install --user speedtest-cliдает вам версию, которая, вероятно, новее, чем та, которая доступна в репозиториях вашего дистрибутива.

Обновление в 2016 году:

speedtest-cliсейчас в репозиториях Ubuntu. Для Ubuntu 16.04 (Xenial) и более поздних версий используйте:

sudo apt install speedtest-cli
speedtest-cli

2
Это, кажется, не работает должным образом. У меня BT бесконечность 50bBit вниз и 20Mbit вверх. Но результаты показывают как 0,53 Мбит вниз и 0,2 Мбит вверх. А? Неверное десятичное размещение? используя wget я получаю 4.27M / s (34Mbit) (хотя какой-то другой сервер)?
Петр Кула

34
Как уже было сказано здесь : Поскольку speedtest-cli является приложением Python, его гораздо проще установить, выполнив: pip install speedtest-cli или: easy_install speedtest-cli В зависимости от того, как Python установлен в вашей системе, вам может потребоваться быть пользователем root, чтобы выполнить вышеизложенное.
CrandellWS

1
Подтверждая, что speedtest-cli нарушен . Не показывает скорости выше 1 Мбит / с. Не передает никакой информации, когда заявляет об этом.
int_ua

5
Это действительно должен быть принятый ответ ... Speedtest-Cli работает нормально для меня; думаю, у @int_ua были проблемы с совместимостью или проблемы с интернетом.
Пилман

2
Это должен быть правильный ответ. Тест скорости означает загрузку и загрузку. Первый ответ ТОЛЬКО измеряет скорость загрузки, которая НЕ является полной картиной скорости вашего интернет-соединения. Особенно, если вы размещаете что-то на этой машине!
Эмиль Боркони

91

попробуйте это в командной строке

wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

попробуй это тоже

sourceforge.net/projects/tespeed/

получил это сверху ссылку


2
Не могли бы вы объяснить, что /dev/nullозначает PLZ ?
Сумасшедший о Natty

12
Это специальный файл, который просто удаляет записанные данные,
Tachyons

2
Для меня в Ubuntu 14.10 с python 2.7.8 команда wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zipработает намного лучше, чем использование speedtset-cliболее поздней версии, которая зависает и ^ C не может прервать выполнение команды. С wget у меня нет проблем с обрезкой загрузочного шрот с ^ C
Willoczy

1
@mlissner, выглядит как первая скорость в мегабитах, вторая в мегабайтах ..
vp_arth

1
@mlissner 1,5 x 8 = 12. один - кбит / с, другой - кбит / с :-)
Tachyons

55

Если вы не можете установить iperf, вам может предшествовать любая команда, которая сдвигает известный объем данных с помощью этой timeкоманды и выполняет суммирование.

Iperf прост и удобен в использовании.

Требуется клиент и сервер.

(на сервере)

 user@server$ iperf -s

(на клиенте)

 user@client$ iperf -c server.domain
 ------------------------------------------------------------
 Client connecting to 192.168.1.1, TCP port 5001
 TCP window size: 16.0 KByte (default)
 ------------------------------------------------------------
 [  3] local 192.168.1.3 port 52143 connected with 192.168.1.1 port 5001
 [ ID] Interval       Transfer     Bandwidth
 [  3]  0.0-10.0 sec    113 MBytes  94.7 Mbits/sec

Подробнее


7
+1 iperf отлично подходит для проверки скорости Ethernet и WIFI
kfmfe04

1
iperfотлично подходит для локальной сети, но пользователь спрашивает о глобальной сети.
IMTheNachoMan

34

Ну, я использую wgetдля этого. Этот маленький инструмент говорит мне, какая у меня скорость.

Чтобы использовать его, просто укажите на файл в Интернете, который является относительно большим, чтобы вы могли получить более точную оценку.

Например

набрав: wget http://hostve.com/neobuntu/pics/Ubu1.aviначнется загрузка файла Ubu1.avi и покажет, с какой скоростью он загружается.

введите описание изображения здесь

Конечно, есть несколько рекомендаций:

  1. Проверь себя на хороших серверах. В случае моей ссылки скорость составляет менее 200 КБ, поэтому, если у вас более высокая скорость, для вас узким местом будет сервер, а не ваша фактическая скорость.

  2. Самая высокая скорость, которую вы увидите, это максимальная скорость, которую может предложить ваше соединение и соединение с сервером. Если ваше соединение имеет размер 512 КБ, а место, где вы скачиваете, - 400 КБ, то ваше максимальное соединение будет 400 КБ, поскольку оно является максимальным для сервера, с которого вы загружаете.

  3. Вам необходимо выполнить тест как минимум 5 раз, чтобы иметь надежную проверку скорости, или, по крайней мере, сделать это в течение минуты или двух. Это поможет вам провести более точную проверку.

  4. Вам нужно иметь как минимум 4 или 5 различных источников тестирования, чтобы иметь более точную скорость. Никогда не проводите тестирование только с одного и того же сайта, так как это может зависеть от вашего расстояния до него, проблем с сервером и подключениями к нему и т. Д. Всегда проводите тестирование с разных серверов.

aria2

Это альтернатива wget. Недостатком wgetявляется отсутствие параллельных соединений. Чтобы использовать aria2, нам нужно скачать его:

   sudo apt-get install aria2

Использовать это просто:

введите описание изображения здесь

На рисунке -x 4 - это количество параллельных соединений, которые мы хотим использовать. Параметр CN в следующей строке показывает, сколько активных параллельных соединений было разрешено загружать с этого сайта. В этом случае CN равен 4. Но если бы мы попытались иметь больше соединений, мы получили бы что-то вроде этого:

введите описание изображения здесь

Мы установили 8 параллельных подключений, но сайт разрешил максимум 5, как показано CN: 5. Это может быть решено с помощью опции -j, которая сообщает aria2c максимальное количество одновременных соединений, которые мы хотим (который по умолчанию равен 5), но если сервер ограничил это, -j не будет работать.


1
wget (пока) не может выполнять сегментированную загрузку, то есть загружать один файл с использованием нескольких (параллельных) подключений, поэтому, если ваш интернет-провайдер ограничивает скорость на 1 соединение, вы не получите точных результатов ... было бы более точным тестом для использования какого-либо другого инструмента, который может по крайней мере использовать сегментированную загрузку (например, aria2)
Младен Б.

3
Это НЕ тест скорости, это только тест скорости загрузки! Тест скорости интернета означает нагрузку вниз и вверх! Второй ответ, и все остальные, упоминающие speedtest-cli, имеют правильный подход.
Эмиль Боркони

1
@EmilBorconi Вы правы, но в реальной жизни мы здесь не проводим сравнительный анализ скорости интернета, это всего лишь ваши средние текущие тесты скорости любого домашнего пользователя без необходимости сайтов, подобных speedtest. Скорость загрузки (которой достаточно для всех, кто пытается определить, есть ли у них узкое место) - достаточно хороший тест. Полный тест скорости понижения / повышения проверил бы, каков полный диапазон вашей скорости на основе вашего интернет-провайдера. Так что да, это было бы лучшим решением, но для любого сценария быстрого теста даже простой wget справился бы с задачей, поскольку обычно люди больше беспокоятся о скорости загрузки, чем о загрузке.
Луис Альварадо

1
@ LuisAlvarado извините, если я звучу грубо, просто я думаю, что люди должны быть в состоянии полностью понять, что они спрашивают / и каков принятый ответ. Многие из новичков будут смотреть на форумах, и они примут / выберут / остановятся на принятом ответе, и они сформируют ложное изображение в своем распоряжении. И да, загрузка важнее, чем загрузка, если только вы не маньяк на Facebook, который публикует selfies каждые 5 минут, а затем начинайте борьбу с вашим провайдером только потому, что вы проверили загрузку, которая хороша, но у вас дрянная загрузка ... Еще раз извините если бы мой тон был грубым, не хотелось оскорблять ...
Эмиль Боркони

1
Мне нравится wgetбольше, чем curlдля этого, потому что wgetотображает MB/s(очень ясно, что это MBytes / s), тогда как curlпросто отображает k(не очень очевидно, что это KBytes / s).
Висбуки

19

Поскольку speedtest-cli является приложением Python, его гораздо проще установить, выполнив:

pip install speedtest-cli

или же:

easy_install speedtest-cli

В зависимости от того, как Python установлен в вашей системе, вам может потребоваться быть пользователем root для выполнения вышеуказанного.


7

Мне нравится speedometerUbuntu Cli.

speedometer -r eth0

Для просмотра живого графика скорости входящих данных.


это то, что я искал некоторое время! Спасибо! но мне не нравится, что он показывает скорость в Кибе, а не в Кб или Кб
redbeam_

3

Запустите несколько экземпляров wget с командой timeout для больших файлов:

#!/bin/bash

timeout 5 wget -q url_1/100MB.zip &
timeout 5 wget -q url_2/file.zip &
timeout 5 wget -q url_3/sample.mov &
timeout 5 wget -q url_4/speech.mp4 &

А затем напишите сценарий для подсчета общего количества загруженных байтов и разделите 5 секунд, и вы получите число байтов в секунду. Должно быть достаточно точным, и вы можете добавить больше экземпляров для максимальной пропускной способности.

Мне еще предстоит протестировать полный сценарий, но однострочная команда «timeout 5 wget url» работает, и в результате вы получаете частично загруженный файл (если 5 секунд недостаточно для завершения загрузки).


Это потребует установки какого-нибудь сервера ...
Braiam

url_1,2,3,4 может быть чем угодно, например публичными серверами.
Rexis

например, timeout 5 wget http://speedtest.netcologne.de/test_100mb.bin -O /tmp/temp5secзатем проанализируйте размер файла и разделите на 5: expr $(stat --printf="%s" /tmp/temp5sec) / 5 / 1024в кбит / с
rubo77

3

Вы можете использовать tespeed. это тест скорости сети терминала, который использует серверы из Speedtest.net. Он использует ближайший тестовый сервер, но также может использовать сервер, указанный пользователем.

 git clone git://github.com/Janhouse/tespeed.git
 cd tespeed
 git submodule init
 git submodule update
 ./tespeed.py 

введите описание изображения здесь

для получения дополнительной информации используйте:

 ./tespeed.py  -h

это предоставит больше возможностей для теста скорости.


Примечание: требуетсяlxml
Мэтт

2

простой однострочник, который проверяет, сколько времени требуется для загрузки 100 МБ (работает /bin/shтакже):

t=$(date +"%s"); wget http://speedtest.tele2.net/100MB.zip -O ->/dev/null ; echo -n "MBit/s: "; expr 8 \* 100 / $(($(date +"%s")-$t))

объяснение:

  1. сохранить временную метку в $ t
  2. скачать 100мб но ничего не хранить
  3. подсчитывать 8 * 100mb / $t

Это отлично работало, так как я тестирую из корневой файловой системы без чтения, доступной только для чтения, и wgetне выводила скорость.
Джош Хабдас

2

Простой bash-скрипт на основе ответа @rexis. Вы можете поместить свои собственные ссылки для тестирования в linksмассив или прочитать их из файла

#!/bin/bash
export LC_ALL=C  #make output in English eg for later use with "du | grep"

TMP_PATH=/tmp/speedtest_data/
TEST_TIME=5

rm -rf $TMP_PATH && mkdir $TMP_PATH

links=("http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-2b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1c.bin" "http://ftp.ntua.gr/pub/linux/ubuntu-releases-dvd/quantal/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.funet.fi/pub/Linux/INSTALL/Ubuntu/dvd-releases/releases/12.10/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/13.2/iso/openSUSE-13.2-DVD-x86_64.iso")

echo "Testing download"

for link in ${links[*]}
do
    timeout $TEST_TIME wget -q -P $TMP_PATH $link &
done

wait

total_bytes=$(du -c -b $TMP_PATH | grep total | awk '{print $1}')

echo "Cleaning up"
rm -rf $TMP_PATH

speed=$(echo "scale=2; $total_bytes / $TEST_TIME / 128" |bc)

echo "Speed is $speed Mbit/s"

exit 0

один минус - а когда я использую другой язык как английский? смотрите: grep :) part
ceph3us

1

Чтобы удобно получить мою скорость загрузки в битах в секунду, я определяю следующее в моем файле $ HOME / .bash_aliases:

speed-test='wget --output-document=/dev/null --report-speed=bits http://speedtest.wdc01.softlayer.com/downloads/test500.zip'

где:

--output-document=/dev/null эффективно отбрасывает вывод wget

--report-speed=bits отображает среднее значение скорости загрузки wget в битах в секунду (бит / с) вместо байтов в секунду по умолчанию (бит / с)



0

Я хотел что-то более продвинутое, чем speedtest.net и различные решения, основанные исключительно на одном веб-сайте. Поэтому я сделал то, что обычно делаю, и написал собственное решение:

https://github.com/cubiclesoft/network-speedtest-cli

Из списка возможностей:

  • Тестирование скорости SSH / SFTP (порт 22).
  • Обычные TCP-порты 80, 443 и 8080, а также произвольное тестирование скорости TCP-порта с использованием настраиваемого TCP / IP-сервера, который поддерживает скорости до 2,2 Гбит / с и 780 Мбит / с.
  • Довольно базовое тестирование латентности сети.
  • Раскрутите капли Digital Ocean и проверьте скорость SSH / SFTP и различные порты TCP.
  • Speedtest.net и пользовательское тестирование скорости OoklaServer. Выдает результаты, аналогичные тестам одиночного соединения на single.speedtest.net.
  • Чистый вывод JSON в режиме без вывода сообщений (-s).

Это более общее решение, которое может использоваться другими приложениями. Мне удалось выявить проблему с сетью интернет-провайдера, которая привела к удвоению скорости нисходящего потока SFTP, что привело к увеличению счастья.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.