Проверка скорости интернета (статистика за месяц)

04 ноября 2018 г.

Проверка скорости интернета — задача довольно простая, если требуется единичное измерение. В интернете есть целая масса онлайн-тестов для этого. Но если стоит задача измерять скорость интернет-соединения в течении месяца с периодичностью раз в час, чтобы оценить качество предоставления услуги и использовать эти данные в качестве довода при общении с поставщиком услуг, то задача несколько усложняется.

О том, как я вышел из этой ситуации и получил сводные данные за месяц (срок и периодичность могут быть любыми), читайте в статье.

Проверка скорости интернета должна была производиться постоянно с равной периодичностью. Поэтому использование рабочего компьютера для этой цели не подходило, иначе его пришлось бы всё время держать во включённом состоянии. Поэтому я решил подключить к локальной сети старый компьютер на базе мат.платы P4P800 SE. И поставить его в кладовку, чтобы сильно не шумел.

Поскольку для сегодняшнего ресурсопотребления крайне скромной мощности этой мат.платы могло и не хватить, пришлось поставить на этот компьютер очень нетребовательный дистрибутив Slitaz Linux. Благо использование отдельного ПК для реализации задуманного в этом вопросе мало ограничивает. Дистрибутив с графическим окружением весит всего 40Mb и работает на старом железе очень шустро. Проверка скорости интернета производится посредством специального ПО.

Проверка скорости интернет-соединения при помощи скрипта speedtest-cli

Поскольку набор встроенных пакетов у Slitaz невелик, я решил использовать скрипт, написанный на Python — speedtest-cli. В зависимости от того, какой дистрибутив (версию) будете использовать вы, в нём уже может быть установлена поддержка Python, либо будет отсутствовать и её нужно будет  доустановить. Но эти пакеты в менеджере пакетов будут в любом случае.

После проверки (установки) поддержки Python, нужно скачать скрипт измерения скорости интернета. В дистрибутиве нас будет интересовать только файл speedtest.py. Этот скрипт использует для проверки известный онлайн-сервис Speedtest.net. Процесс измерения прост и состоит из следующих шагов:

  1. Запуск управляющего скрипта при старте системы.
  2. Запуск скрипта speedtest.py управляющим скриптом с параметрами.
  3. Запись результатов измерения в лог-файл.
  4. Повторный запуск скрипта speedtest.py через необходимый промежуток времени.

Первым делом нужно написать управляющий скрипт, который будет командовать нашим основным скриптом, используя его параметры. Я назвал его speed.sh. Как видно из расширения это Shell-скрипт. Поддержки shell-скриптов в дистрибутиве также может не оказаться. Но как и поддержка Python, она устанавливается из пакетного менеджера и проблемы не составляет.

Содержание speed.sh следующее:

#!/bin/bash 
# /home/admin/Desktop/Speed/speed.sh

sleep 30s

while [ 1 = 1 ]
do

date | tee -a /home/admin/Desktop/Speed/logfile.txt
/home/admin/Desktop/Speed/speedtest.py --simple | tee -a /home/admin/Desktop/Speed/logfile.txt
sleep 4h

done

Чтобы не заниматься в случае необходимости поисками того, где всё лежит и как работает, я разместил папку со скриптами на рабочем столе в каталоге Speed. Согласно справке на GitHub нужно решить вопрос с правами скриптов на запуск. Команда там указана:

chmod +x speedtest-cli

Теперь скрипт будет запускаться без проблем. Работа speed.sh начинается с ожидания в 30 секунд, пока старый ПК загрузит рабочее окружение, чтобы избежать возможных проблем при начале работы. Далее запускается цикл while. В процессе его выполнения в лог-файл  logfile.txt записывается дата и время проведения замера скорости интернета и результат этого измерения. Обратите внимание, что адресацию к файлам я осуществляю от папки пользователя /home. Это важно.

Далее скрипт уходит в режим ожидания на 4 часа и по истечении этого времени повторяется. Можете почитать справку к программе sleep и выставить свой временной интервал для проверки. Последний вопрос, который нужно решить — автозапуск speed.sh при загрузке системы. ОБ этом ниже.

Измерение скорости интернета наглядно

В дистрибутиве Slitaz Linux есть визуальный интерфейс для управления автозапуском, поэтому создавать какие-то новые файлы для этого не потребуется. Нужно будет только слегка поправить существующий. Для этого надо запустить приложение управления автозапуском. Сделать это можно через меню:

измерение скорости интернета

а в открывшемся конфигурационном файле сделать следующую запись:


# Start Network speedtest
/home/admin/Desktop/Speed/speed.sh &

вот так:

измерение скорости интернета

Сохраняем конфигурацию и перезагружаем ПК. Сразу при загрузке ПК открываем менеджер процессов и смотрим: там должен появиться процесс speed.sh — наш управляющий скрипт. Он запускается сразу после графического окружения OpenBox.

измерение скорости интернета

Далее через 30 секунд запускается Python и выполняется программа замера скорости. При этом лог-файл на этот момент должен иметь вес 0 байт, поскольку пуст. Сначала в этот файл запишется дата и время и его объём увеличится. Так можно косвенно следить за выполнением скрипта. Секунд через 40 (среднее время выполнения замеров у Speedtest.net) в этот файл запишется результат измерений. И скрипт уйдёт в режим ожидания на указанный промежуток времени. Выглядит это всё следующим образом:

измерение скорости интернета

P.S.: остаётся только один неучтённый момент — возможная остановка работы ПК (ОС) через некоторый промежуток времени. Можно периодически пинговать компьютер в кладовке с любого другого устройства в локальной сети (или даже удалённо посредством DDNS) и определять его состояние. При перезагрузке скрипт продолжит писать в тот же лог-файл с сохранением ранее внесённых данных.

Если материалы сайта оказались для вас полезными, можете поддержать дальнейшее развитие ресурса, оказав ему (и мне ) моральную и материальную поддержку.

Поддержи Nevor.ru

руб.

Яндекс.Метрика

Мониторинг доступности сайта Host-tracker.com