Проверка скорости интернета (статистика за месяц)
Проверка скорости интернета — задача довольно простая, если требуется единичное измерение. В интернете есть целая масса онлайн-тестов для этого. Но если стоит задача измерять скорость интернет-соединения в течении месяца с периодичностью раз в час, чтобы оценить качество предоставления услуги и использовать эти данные в качестве довода при общении с поставщиком услуг, то задача несколько усложняется.
О том, как я вышел из этой ситуации и получил сводные данные за месяц (срок и периодичность могут быть любыми), читайте в статье.
Проверка скорости интернета должна была производиться постоянно с равной периодичностью. Поэтому использование рабочего компьютера для этой цели не подходило, иначе его пришлось бы всё время держать во включённом состоянии. Поэтому я решил подключить к локальной сети старый компьютер на базе мат.платы P4P800 SE. И поставить его в кладовку, чтобы сильно не шумел.
Поскольку для сегодняшнего ресурсопотребления крайне скромной мощности этой мат.платы могло и не хватить, пришлось поставить на этот компьютер очень нетребовательный дистрибутив Slitaz Linux. Благо использование отдельного ПК для реализации задуманного в этом вопросе мало ограничивает. Дистрибутив с графическим окружением весит всего 40Mb и работает на старом железе очень шустро. Проверка скорости интернета производится посредством специального ПО.
Проверка скорости интернет-соединения при помощи скрипта speedtest-cli
Поскольку набор встроенных пакетов у Slitaz невелик, я решил использовать скрипт, написанный на Python — speedtest-cli. В зависимости от того, какой дистрибутив (версию) будете использовать вы, в нём уже может быть установлена поддержка Python, либо будет отсутствовать и её нужно будет доустановить. Но эти пакеты в менеджере пакетов будут в любом случае.
После проверки (установки) поддержки Python, нужно скачать скрипт измерения скорости интернета. В дистрибутиве нас будет интересовать только файл speedtest.py. Этот скрипт использует для проверки известный онлайн-сервис Speedtest.net. Процесс измерения прост и состоит из следующих шагов:
- Запуск управляющего скрипта при старте системы.
- Запуск скрипта speedtest.py управляющим скриптом с параметрами.
- Запись результатов измерения в лог-файл.
- Повторный запуск скрипта 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) и определять его состояние. При перезагрузке скрипт продолжит писать в тот же лог-файл с сохранением ранее внесённых данных.