Chciałbym okresowo wyświetlać mój wynik testu prędkości w teście wskaźnik-sysmonitor .
Jeśli biegniesz, speedtest-cli ma nieco przycięte wyjście
$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s
Czy jest jakiś sposób, aby jeszcze bardziej przyciąć dane wyjściowe, aż do samej prędkości pobierania?
--no-upload
opcji, aby nie wyświetlać przesyłania.Odpowiedzi:
Podobnie
speedtest-cli
jak program i biblioteka pythonowa, dość łatwo jest stworzyć minimalny program alternatywny, który wykonuje tylko test pobierania i drukuje dane wyjściowe.Otwórz edytor, zapisz jako
dl-speedtest.py
Biegnij z
python dl-speedtest.py
Daje to wynik w
bps, jako liczbę zmiennoprzecinkowąMbps zaokrągloną do jednego miejsca po przecinku zgodnie z żądaniemMinimalna wersja speedtest-cli, aby to działało, to 1.0.0. Myślę, że może zaistnieć potrzeba
pip install speedtest-cli --upgrade
aktualizacji.źródło
To praca dla
awk
:Objaśnienia
NR==2
- weź linię2
{print$2}
- wydrukuj drugą kolumnę (domyślnie rozdzielone spacjami){print$2" "$3}
- wydrukuj drugą kolumnę, a następnie spację i trzeciąZe
sed
jest to trochę bardziej skomplikowane:Objaśnienia
/D/!d
- szukaj linii zawierającychD
i nie (!
)d
suĹ je, ale co drugi wierszs/A/B/
-s
upstituteA
withB
.*
- weź wszystko[^ ]*
- weź wszystko, co nie jest (^
) spacją␣
(znak spacji) - dosłowna przestrzeń\(…\)
- weź wszystko do środka i zapisz jako grupę\1
- zdobądź zawartość grupy 1źródło
Będzie to również działać:
źródło
Możesz spróbować:
źródło
grep
łączyć zsed
, możesz po prostu użyćsed -n
i dołączyćp
na końcu wyrażenia, na przykładspeedtest-cli --simple | sed -nr 's/Download:\s*//p'
.A potem jest:
Podobnie jak pierwsza opcja deseru bez selektora linii.
źródło
grep ... | awk
-speedtest-cli --simple | awk '/Download/{print $2}'