Tags Posts tagged with "gnu wget"

gnu wget

przez -
1 2082
Sieć

W Internecie dostępnych jest wiele serwisów, które testują prędkość naszego łącza. Jedne pokazuję wyniki w formie obrazków, sygnatur, posiadają ciekawą formę graficzną, kuszą wyglądem. Na wyniki takich testerów trzeba patrzeć z przymrużeniem oka. W tym artykule postaramy się napisać prosty tester prędkości łącza. Będzie on testował jak szybko jesteśmy w stanie pobierać plik z Internetu. Również i nasz skrypt nie będzie doskonały.

Przecież nam chodzi o poznanie Basha, a nie pisanie idealnej aplikacji do testowania prędkości łącz internetowych. W skrypcie wykorzystamy bardzo potężne i proste narzędzie jakim jest GNU Wget.

GNU Wget pozwala na pobieranie plików przy wykorzystaniu takich protokołów jak HTTP, HTTPS oraz FTP najpowszechniej używanych protokołów internetowych. Jego cechą wyróżniającą jest stosunek możliwości do niewielkich rozmiarów. Wget zaliczany jest do kategorii narzędziowych programów sieciowych i rozpowszechniany jest na licencji typu Open Source.

Wget może przedstawić się jako przeglądarka (opcja -U, np. wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021003"). Przykładowe użycie wgeta obrazuje poniższy log:

paszczak000@hell:~/skrypty/bash$ wget http://temp.thecamels.org/test.img
--09:01:38--  http://temp.thecamels.org/test.img
           => `test.img'
Translacja temp.thecamels.org... 78.47.147.217
Łączenie się z temp.thecamels.org|78.47.147.217|:80... połączono.
Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 200 OK
Długość: 10,485,760 (10M) [application/x-img]

100%[=================================================================================================================================================>] 10,485,760     1.81M/s    ETA 00:00

09:01:44 (1.77 MB/s) - `test.img' saved [10485760/10485760]

Proces pobierania można wygodnie obserwować na ekranie dzięki wypisywanym znakom ===>, z których każdy znak = reprezentuje ustaloną ilość otrzymanych danych (domyślnie 1KB).

Jeżeli już znamy program, który będzie pobierał pliki z Internetu – czas na wykorzystanie jego możliwości. Wykorzystamy do tego polecenia wget, awk. Pierwsze z nich zajmie się pobieraniem pliku z ustalonego przez nas serwera, a drugie będzie odpowiedzialne za wyświetlenie wyników na ekranie. Dla zwiększenia wiarygodności wyników, zrobimy prostą pętlę, która powtórzy test kilka razy. Skrypt wygląda następująco:

if [ "$1" != "" ];
then
        stop=$1
        for (( i=1; i<=stop; i++ )); do
                wget -O /dev/null http://temp.thecamels.org/test.img 2>&1 | awk '/saved/ { gsub(/.*\(|\).*/, ""); print; }';
        done
else
        echo "Podaj ilosc prob np: ./speed_tester.sh 10";
fi

Zaczniemy od pobrania jakiegoś pliku testowego. Następnie uruchamiamy polecenie wget z parametrem -O. Parametr ten skieruje nam pobrany plik do czarnej dziury (/dev/null). Dzięki temu nie będziemy śmiecić sobie systemu jakimiś plikami. Następnie skorzystamy ze standardowych strumieni. Za pomocą symbolu 2>&1 przekierowujemy standardowy strumień błędów (STDERR) do standardowego wyjścia (STDOUT). Wynikiem działania skryptu będzie:

./speed_tester.sh 10
1.74 MB/s
1.73 MB/s
1.48 MB/s
1.73 MB/s
1.75 MB/s
1.50 MB/s
1.74 MB/s
1.73 MB/s
1.75 MB/s
1.73 MB/s

Następnie za pomocą awk wycinamy interesującą nas wartość, czyli prędkość pobierania pliku. Wynik ten drukujemy na ekranie i kończymy wykonywać skrypt. Modyfikując powyższy skrypt możemy napisać sobie proste narzędzie, które będzie nam monitorowało strony Internetowe, którego wynikiem będzie takie oto zestawienie:

Web page	Date	WWW	Size	Transfer
TheCamels	08:43	OK	8	3.57 MB/s
Empik		08:43	OK	36	278.96 KB/s
Orange		08:43	OK	20	842.21 KB/s
ICS		08:43	ERROR	0	0.00 KB/s
WP		08:43	OK	8	306.01 KB/s
Onet		08:43	OK	20	935.31 KB/s

I to by było na tyle. Oczywiście do wyników zwracanych przez skrypt należy podchodzić z przymrużeniem oka. Prędkość ta zależy przecież od wielu czynników jak np. możliwości serwera, z którego pobieramy plik, priorytety itp.

Polecane

Jesień Linuksowa

1 737
Polska Grupa Użytkowników Linuksa ma zaszczyt zaprosić na konferencję Jesień Linuksowa 2017, która odbędzie się w dniach 22 – 24 września 2017 roku. Jako...