Vyhledávání na webu

Jak postavit automatický měřič rychlosti internetu pro vaši domácí síť


Zažíváte časté problémy s připojením k internetu, ale kdykoli provedete test rychlosti internetu, výsledky ukazují, že dosahujete rychlostí, které vám sliboval poskytovatel internetových služeb? Pokud se v tom poznáváte, zvažte vytvoření automatického sledovače a zaznamenávače rychlosti internetu.

Váš poskytovatel internetu nechce, abyste o rychlosti svého internetu věděli toto

Fakt: rychlosti internetu, které slibuje většina poskytovatelů internetových služeb (ISP), jsou ‚až do určité rychlosti.‘ Jinými slovy, rychlost internetu, za kterou platíte, je nejvyšší hranicí. Reklamovanou rychlost téměř nikdy nedosáhnete po celou dobu. Například pokud platíte za ‚gigabitové‘ připojení, tuto rychlost nedosáhnete konzistentně.

Rychlosti ‚až‘, které inzeruje většina poskytovatelů internetu, skrývají drobný tisk ve vaší smlouvě o internetových službách: tyto rychlosti představují nejlepší možný scénář a není zaručeno, že vždy dosáhnete maximální rychlosti. Navíc inzerovaná šířka pásma odráží rychlost, kterou zamýšlí poskytovatel dodat ke svému drátovému routeru, nikoli rychlosti dodávané vašim připojeným zařízením.

Protože drobný tisk je ve prospěch vašeho poskytovatele internetových služeb, pokud máte problémy s rychlostí internetu, je nejlepší sledovat vaše připojení po dobu 1-4 týdnů a zaznamenávat všechny výpadky, než zavoláte svému poskytovateli. Tímto způsobem, stejně jako tomu bylo u Moniky, když její poskytovatel požadoval 1000 $, aby jí umožnil odejít, podporné záznamy vám pomohou případ obhájit, vyjednat nové podmínky nebo ukončit smlouvu s poskytovatelem. Protože jednorázové webové testy rychlosti internetu nejsou příliš spolehlivé, zde je návod, jak vytvořit automatický měřič rychlosti internetu, který automaticky zaznamenává vaši rychlost internetu v nastavených intervalech.

Nejdřív věci nejdřív: Příprava nástrojů pro sledování pro přesné zaznamenávání rychlosti internetu

Speedtest od Ookla je nejpoužívanější tester rychlosti internetu. Budeme ho používat, ale místo toho, abychom používali nafouklou verzi prohlížeče, nainstalujeme verzi CLI. Prvním krokem je aktualizace vašeho systému a poté instalace speedtest-cli:

sudo apt update 
sudo apt install speedtest-cli -y



Po instalaci speedtest-cli spusťte ruční test, abyste potvrdili, že funguje:

speedtest-cli --simple

Výsledky by měly zahrnovat dobu pingu a vaše rychlosti stahování a nahrávání v megabitech za sekundu.

To dokazuje, že speedtest-cli funguje. Další část procesu je vytvoření testovače rychlosti internetu a zapisovače dat.

Vytvoření jednoduchého měřiče rychlosti internetu a zapisovače dat

Použijte příkaz mkdir k vytvoření složky věnované projektu, potom použijte příkaz cd k přechodu do ní, abyste mohli začít vytvářet nástroj.

mkdir -p ~/"Internet Speed Tracker Project"
cd ~/"Internet Speed Tracker Project"

Použití uvozovek zajišťuje, že terminál interpretuje mezery jako součást názvu složky. Pokud je raději nechcete používat, vytvořte název složky bez mezer.

Použijte nano nebo jakýkoli jiný textový editor v terminálu k vytvoření souboru Python s názvem 'internet speed tracker', poté do něj zkopírujte následující 40řádkový skript:

nano internet_speed_tracker.py
#!/usr/bin/env python3
import subprocess
import csv
import os
from datetime import datetime

#--------------CONFIGURATIONs--------------
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
LOG_FILE = os.path.join(BASE_DIR, "speed_log.csv")

def run_speed_test():
    try:
        # Run speedtest in simple mode
        result = subprocess.check_output(["speedtest-cli", "--simple"]).decode("utf-8")
        
        # These settings parse the text. For example: Ping: 20 ms, Download: 50.5 Mbit/s, etc
        lines = result.split('\n')
        ping = lines[0].split()[1]
        download = lines[1].split()[1]
        upload = lines[2].split()[1]
        return ping, download, upload
    #These settings keep Speedtest from crashing by logging zeroes when the internet is totally down
    except Exception:
        return "0", "0", "0" 

def main():
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    ping, download, upload = run_speed_test()
    
    # Check if file exists to add headers if it doesn't
    file_exists = os.path.isfile(LOG_FILE)
    
    with open(LOG_FILE, mode='a', newline='') as f:
        writer = csv.writer(f)
        if not file_exists:
            writer.writerow(["Timestamp", "Ping (ms)", "Download (Mbit/s)", "Upload (Mbit/s)"])
        writer.writerow([timestamp, ping, download, upload])

if __name__ == "__main__":
    main()



Pokud používáte nano, stiskněte Ctrl + O + Enter pro zápis a uložení změn, a poté Ctrl + X pro návrat do terminálu.

Všimnete si, že skript ukládá protokoly ve formátu CSV. To je důležité, protože to vytváří soubor, který můžete otevřít v Google Sheets, LibreOffice a podobných programech.

Nyní použijte příkaz chmod k nastavení souboru jako spustitelného:

chmod +x internet_speed_tracker.py

Dalším krokem je vytvoření systemd časovače, aby nástroj věděl, kdy provést test rychlosti internetu. Než to uděláte, je nejlepší nástroj nejprve otestovat pomocí tohoto příkazu:

./internet_speed_tracker.py

Spuštění skriptu by mělo vytvořit nový soubor protokolu ve složce projektu. Tento soubor můžete otevřít pomocí LibreOffice:

Použití systemd k automatizaci testování rychlosti internetu, sledování a zaznamenávání

Systemd je nejlepší způsob, jak automatizovat a spravovat služby na Linuxu. Použijte nano k vytvoření systemd servisního souboru pro testovač rychlosti internetu a správce záznamů, poté vložte níže uvedený skript. Nezapomeňte aktualizovat své absolutní cesty; jinak skript selže.

sudo nano /etc/systemd/system/internet-speed-tracker.service
[Service]
ExecStart=/usr/bin/python3 "home/htg/Internet Speed Tracker Project/internet_speed_tracker.py"
User=htg

Použijte znovu nano k vytvoření souboru jednotky trvalého časovače pro nástroj, poté zkopírujte a vložte níže uvedený skript:

sudo nano /etc/systemd/system/internet-speed-tracker.timer
[Timer]
OnBootSec=5min
OnUnitActiveSec=2min
Persistent=true

[Install]
WantedBy=timers.target

Soubor jednotky časovače nastavuje, jak často se spouští test rychlosti internetu. Pro testování jsem jej nastavil na každé 2 minuty; upravte jej podle svých potřeb. Například jej můžete nastavit tak, aby se spouštěl každou hodinu.

Znovu načtěte démon a poté povolte časovač:

sudo systemctl daemon-reload
sudo systemctl enable --now internet-speed-tracker.timer

To je vše: právě jste vytvořili test rychlosti internetu, který zaznamenává vaši rychlost internetu na základě času definovaného v souboru jednotky časovače.

Čtení souboru protokolu rychlosti internetu

Po několika dnech nebo týdnech bude mít váš záznam rychlosti internetu spoustu dat, která můžete použít k tomu, abyste zjistili, jak dobrý (nebo špatný) je váš internet. Záznamy také pomohou, pokud je váš internet natolik špatný, že by stálo za to zavolat vašemu poskytovateli internetu.

Při prohlížení souboru protokolu hledejte poklesy během špičkových hodin, jako jsou večery a víkendy, rovné linie a jejich délku, a nulové hodnoty. Poklesy během špiček jsou případy, kdy vaše rychlost internetu klesne o 50 % nebo více. Naznačují, že váš poskytovatel internetu přetížil váš internetový kanál nebo zpomaluje váš internet. Rovné linie obvykle naznačují fyzické problémy s připojením, zatímco nulové hodnoty indikují úplný výpadek internetu.


Příště, až váš poskytovatel internetu řekne: „Všechno se u nás zdá být v pořádku,“ použijte protokolový soubor k podpoře svého tvrzení. Budou vás brát mnohem vážněji, pokud jim budete moci poslat soubor, který ukazuje konzistentně nízké rychlosti internetu a chronické poklesy výkonu.

Související články