1

Temat: Pakiet fping

Czy byłaby możliwość dodania pakietu fping? To jest alternatywa dla zwykłego ping, która potrafi pingować wiele hostów jednocześnie. Do tego zwraca miłe wyjście, które znakomicie nadaje się przy różnego rodzaju skryptach. No i ma też ludzkie znaczniki czasu. Poniżej jest przykład wyjścia (parametr -Q 30 zwraca staty co 30s):

$ fping 192.168.1.1 208.67.220.220 wp.pl onet.pl interia.pl 8.8.8.8 -i 10 -l -Q 30 -a
[15:54:43]
192.168.1.1    : xmt/rcv/%loss = 30/30/0%, min/avg/max = 0.75/2.13/26.8
208.67.220.220 : xmt/rcv/%loss = 30/30/0%, min/avg/max = 7.04/15.3/31.5
wp.pl          : xmt/rcv/%loss = 30/30/0%, min/avg/max = 13.7/21.3/27.9
onet.pl        : xmt/rcv/%loss = 30/30/0%, min/avg/max = 22.4/27.4/35.5
interia.pl     : xmt/rcv/%loss = 30/30/0%, min/avg/max = 15.5/23.1/37.0
8.8.8.8        : xmt/rcv/%loss = 30/29/3%, min/avg/max = 32.5/38.5/61.3
[15:55:13]
192.168.1.1    : xmt/rcv/%loss = 30/30/0%, min/avg/max = 0.67/1.09/2.72
208.67.220.220 : xmt/rcv/%loss = 30/30/0%, min/avg/max = 9.68/14.9/22.8
wp.pl          : xmt/rcv/%loss = 30/30/0%, min/avg/max = 15.1/22.3/32.2
onet.pl        : xmt/rcv/%loss = 30/30/0%, min/avg/max = 21.6/27.0/32.5
interia.pl     : xmt/rcv/%loss = 30/30/0%, min/avg/max = 16.5/25.1/34.5
8.8.8.8        : xmt/rcv/%loss = 30/30/0%, min/avg/max = 32.6/38.0/52.3

2 (edytowany przez mar_w 2015-11-15 19:03:00)

Odp: Pakiet fping

Niby fajny ten pakiet i da się przeportować z BB ale nie do końca wykonuje to co powinien.
Dałeś mu interwał co 10 milisekund ( -i 10 ) to w sekundzie wychodzi 100 pakietów ( 1000ms = 1s) Statystyka jest co 30 sekund więc wysłanych powinno być dużo więcej. A tu wychodzi 1 pakiet na sekundę. Dziwne...
Dobrze wyszło np tutaj:

fping www.google.pl -Q 5 -i 5000 -l -a
[19:01:34]
www.google.pl : xmt/rcv/%loss = 1/1/0%, min/avg/max = 46.2/46.2/46.2
[19:01:39]
www.google.pl : xmt/rcv/%loss = 1/1/0%, min/avg/max = 39.7/39.7/39.7
Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

3

Odp: Pakiet fping

Interwał w tym przypadku oznacza czas wysyłania pakietów między kolejnymi hostami na liście i to jest 10ms różnicy. Pingi do hostów lecą standardowo co 1s. Można też zmienić jeśli potrzeba:

   -p n       interval between ping packets to one target (in millisec)
                (in looping and counting modes, default 1000)

4 (edytowany przez mar_w 2015-11-15 22:21:16)

Odp: Pakiet fping

A widzisz, nie doczytałem wszystkiego, tylko sprawdziłem znaczenie opcji które użyłeś i z opisu(helpa):

 -i n       interval between sending ping packets (in millisec) (default 25)

wcale nie wynikało, że to są interwały pingów pomiędzy hostami z listy. Bo co gdy jest tylko jeden host na liście ? Dobrze że wyjaśniłeś sytuację smile

EDIT1: Ale mimo wszystko pogubił się na takim teście:

root@OpenWrt:/tmp# fping www.google.pl www.onet.pl www.wp.pl -Q 10 -l -a -i 500
[21:56:38]
www.google.pl : xmt/rcv/%loss = 8/8/0%, min/avg/max = 0.00/27.0/49.0
www.onet.pl   : xmt/rcv/%loss = 9/9/0%, min/avg/max = 0.00/43.7/56.9
www.wp.pl     : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.00/39.6/47.0
[21:56:48]
www.google.pl : xmt/rcv/%loss = 7/7/0%, min/avg/max = 0.00/25.2/35.3
www.onet.pl   : xmt/rcv/%loss = 6/6/0%, min/avg/max = 0.00/35.0/56.9
www.wp.pl     : xmt/rcv/%loss = 7/7/0%, min/avg/max = 0.00/27.8/36.9

Pomijając (podstępnie wink) ustawione cyferki w komendzie, to nie powinien pokazać min = 0.00 do serwisów w internecie szczególnie gdy mam połączenie z sieci komórkowej. Oznacza to, że Googla noszę sobie w kieszeni big_smile Czułem że coś jest z nim nie do końca dobrze.... A zaczęło sie niewinnie od niejasnego helpa smile

EDIT2: fping z Minta17 pokazuje dobrze. Pomija pakiety które nie mieszczą się w interwale jako "loss" i czasy "minimum" są zbliżone z wartościami oczekiwanymi ~21-25 ms.

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

5

Odp: Pakiet fping

No gdy jest jeden na liście, tak jak ty miałeś w tym przypadku, to pierw jest ustawiany interwał, czyli 5s, a potem leci ping. Dlatego masz tylko 1 ping w statach.

U mnie na debianie też pokazuje dobrze:

$ fping www.google.pl www.onet.pl www.wp.pl -Q 10 -l -a -i 500
[22:19:56]
www.google.pl : xmt/rcv/%loss = 7/7/0%, min/avg/max = 7.57/9.09/12.3
www.onet.pl   : xmt/rcv/%loss = 7/7/0%, min/avg/max = 19.2/20.7/23.7
www.wp.pl     : xmt/rcv/%loss = 6/6/0%, min/avg/max = 13.3/15.1/15.9

Na pewno jest ta sama wersja? W debianie jest 3.13

6 (edytowany przez mar_w 2015-11-16 16:32:04)

Odp: Pakiet fping

To że u mnie był jeden ping, to nie miałem żadnych zastrzeżeń bo odpowiednio dobrałem cyfry.
Dziwiłem się dlaczego u CIEBIE jest tylko 30 pingów na 30 sekund skoro interwał wynosił 10 ms - "between sending ping packets (in millisec) (default 25)". Jakby dopisali w helpie "is not the same as -p" to bym zajrzał do opcji -p. Wyjaśniłeś i jest OK. Mniejsza z tym.

Na Mint 17 Qiana jest 3.8-1 a ten przeportowany z BB ma wersję 2.4b2_to-ipv6. Ogólnie to zmieniła się strona pobierania fping-a. Ale to akurat jest pryszcz. Trzeba by napisać nowy Makefile dla wersji 3.13......

Od biedy do samych statystyk to zawsze możesz napisać sobie skrypcik, który robi podobne rzeczy z pinga. Skrypt będzie Ci działał na każdej wersji Openwrt.. itd. Wprowadzanie adresów możesz zrobić np.  interaktywnie oraz dodać inne wodotryski.
Ten skrypt nie jest idealny bo gdy nie ma hosta to rozjeżdzają się linie, i potrzeba by sprawdzać warunki, ale dla chcącego nic trudnego smile

#!/bin/sh

# host 1
Host1="www.google.pl"
# host 2
Host2="www.onet.pl"
# host 3
Host3="kernel.org"

#liczba pingow do poszczegolnych hostow
N=5

#interwal miedzy pingami do poszczegolnych hostow w sekundach
#s=1

#interwal miedzy pingami do tego samego hosta
#int=1

#sciezka do pliku przed obrobka
multiping="/tmp/test1"

#sciezka do pliku po obrobce
multiping2="/tmp/test2"

if [ -e $multiping ]; then 
rm $multiping
fi
if [ -e $multiping2 ]; then 
rm $multiping2
fi

echo "[`date | awk '{ print $4 }'`]" > $multiping2

ping $Host1 -c $N -q >> $multiping &
#sleep $s

ping $Host2 -c $N -q >> $multiping &
#sleep $s

ping $Host3 -c $N -q >> $multiping &

SS=$((($N)+1))

sleep $SS

#dane do pliku wynikowego dla Hosta1
P11=`cat $multiping | awk 'NR==1 { print $2}'`
P12="xmt/rcv/%loss "
min1=`cat $multiping |awk 'NR==4 {print $1}'`
avg1=`cat $multiping |awk 'NR==4 {print $4}'`
max1=`cat $multiping |awk 'NR==4 {print $6}'`
P13="min/avg/max/mdev"
P14=`cat $multiping | awk 'NR==5 { print $4}'`

#dane do pliku wynikowego dla Hosta2
P21=`cat $multiping | awk 'NR==6 { print $2}'`
P22="xmt/rcv/%loss "
min2=`cat $multiping |awk 'NR==9 {print $1}'`
avg2=`cat $multiping |awk 'NR==9 {print $4}'`
max2=`cat $multiping |awk 'NR==9 {print $6}'`
P23="min/avg/max/mdev"
P24=`cat $multiping | awk 'NR==10 { print $4}'`

#dane do pliku wynikowego dla Hosta3
P31=`cat $multiping | awk 'NR==11 { print $2}'`
P32="xmt/rcv/%loss "
min3=`cat $multiping |awk 'NR==14 {print $1}'`
avg3=`cat $multiping |awk 'NR==14 {print $4}'`
max3=`cat $multiping |awk 'NR==14 {print $6}'`
P33="min/avg/max/mdev"
P34=`cat $multiping | awk 'NR==15 { print $4}'`

#plik wynikowy
echo "$P11    : $P12= $min1/$avg1/$max1,    $P13 = $P14 " >> $multiping2
echo "$P21    : $P22= $min2/$avg2/$max2,    $P23 = $P24 " >> $multiping2
echo "$P31    : $P32= $min3/$avg3/$max3,    $P33 = $P34 " >> $multiping2

#cat $multiping
cat $multiping2

exit 0

Uruchom ten skrypt i zobaczysz co będzie....

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

7

Odp: Pakiet fping

Dziwne wyjście zwraca: xD

[13:40:28]
www.onet.pl    : xmt/rcv/%loss = //,    min/avg/max/mdev = statistics
packets    : xmt/rcv/%loss = ---/statistics/,    min/avg/max/mdev = 5
min/avg/max/mdev    : xmt/rcv/%loss = 5/5/0%,    min/avg/max/mdev = 110.694/111.486/113.088/0.894

Tam były 3 hosty, zwróciło 1. Pingi też nie odpowiadają wartością tym, które są faktycznie (10-15). Ja jednak wolę fping. xD

8 (edytowany przez mar_w 2015-11-17 17:32:52)

Odp: Pakiet fping

Kilka uwag.
1. Rzeczywiście w pewnych liniach powinien wyciągać pozycję nr 7 zamiast 6. Błąd w skrypcie sad
2. kopiowanie skryptu z Forum wstawia spacje w miejsca (zamiast) tabulatorów. Wtedy linie trochę się rozjeżdżają lewo-prawo.
3. Pisałem, że jak nie ma hosta w sieci to jest sieczka i należałoby sprawdzić warunki przed wylistowaniem.
4. Nigdzie nie napisałem, że skrypt jest lepszy niż program fping, aczkolwiek fping w wersji z BB też wszystkiego nie sprawdza i wylistowuje bzdury takie jak czas 0.00 do hostów.

Trochę poprawiłem....

#!/bin/sh

# host 1
Host1="www.google.pl"
# host 2
Host2="www.onet.pl"
# host 3
Host3="kernel.org"

#liczba pingow do poszczegolnych hostow
N=5
#interwal miedzy pingami do poszczegolnych hostow w sekundach
#s=1
#interwal miedzy pingami do tego samego hosta
#int=1

#sciezka do pliku przed obrobka
multiping="/tmp/test1"
#sciezka do pliku po obrobce
multiping2="/tmp/test2"

if [ -e $multiping ]; then 
rm $multiping
fi
if [ -e $multiping2 ]; then 
rm $multiping2
fi

echo "[`date | awk '{ print $4 }'`]" > $multiping2

ping $Host1 -c $N -q >> $multiping &
#sleep $s
ping $Host2 -c $N -q >> $multiping &
#sleep $s
ping $Host3 -c $N -q >> $multiping &

SS=$((($N)+1))
sleep $SS

#dane do pliku wynikowego dla Hosta1
P11=`cat $multiping | awk 'NR==1 { print $2}'`
P12="xmt/rcv/%loss "
xmt1=`cat $multiping |awk 'NR==4 {print $1}'`
rcv1=`cat $multiping |awk 'NR==4 {print $4}'`
loss1=`cat $multiping |awk 'NR==4 {print $7}'`
P13="min/avg/max"
P14=`cat $multiping | awk 'NR==5 { print $4}'`

#dane do pliku wynikowego dla Hosta2
P21=`cat $multiping | awk 'NR==6 { print $2}'`
P22="xmt/rcv/%loss "
xmt2=`cat $multiping |awk 'NR==9 {print $1}'`
rcv2=`cat $multiping |awk 'NR==9 {print $4}'`
loss2=`cat $multiping |awk 'NR==9 {print $7}'`
P23="min/avg/max"
P24=`cat $multiping | awk 'NR==10 { print $4}'`

#dane do pliku wynikowego dla Hosta3
P31=`cat $multiping | awk 'NR==11 { print $2}'`
P32="xmt/rcv/%loss "
xmt3=`cat $multiping |awk 'NR==14 {print $1}'`
rcv3=`cat $multiping |awk 'NR==14 {print $4}'`
loss3=`cat $multiping |awk 'NR==14 {print $7}'`
P33="min/avg/max"
P34=`cat $multiping | awk 'NR==15 { print $4}'`

#plik wynikowy
echo "$P11     : $P12= $xmt1/$rcv1/$loss1     $P13 = $P14 " >> $multiping2
echo "$P21     : $P22= $xmt2/$rcv2/$loss2     $P23 = $P24 " >> $multiping2
echo "$P31     : $P32= $xmt3/$rcv3/$loss3     $P33 = $P34 " >> $multiping2

#cat $multiping
cat $multiping2

exit 0

i teraz u mnie wygląda to tak:

root@OpenWrt:~# mping 
[17:03:33]
www.google.pl    : xmt/rcv/%loss = 5/5/0%     min/avg/max = 18.694/26.839/38.610 
www.onet.pl      : xmt/rcv/%loss = 5/5/0%     min/avg/max = 28.264/32.101/38.659 
kernel.org       : xmt/rcv/%loss = 5/5/0%     min/avg/max = 188.698/195.502/199.264

to jest tylko zarys jednego z możliwych rozwiązań...

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

9

Odp: Pakiet fping

Nie wiem czemu ten skrypt u ciebie działa poprawnie, a u mnie nie chce. big_smile Generalnie hosty odpowiadają.

10 (edytowany przez mar_w 2015-11-18 17:25:24)

Odp: Pakiet fping

W takim razie dziwne rzeczy dzieją się u Ciebie i u mnie. Fping przeportowany z BB do CC jak i ten oryginalny z BB uruchomiony na BB gubi się z - czasami "min" - dostępu do serwisów, pokazując 0.00 zamiast pokazywać inne komunikaty w postaci porzuconych pakietów itp. mówię tu o komendzie:

$fping www.google.pl www.onet.pl www.wp.pl -Q 10 -l -a -i 500

I to może sobie każdy sprawdzić. Ale ogólnie nie oznacza to, że pakiet jest zły. W domyślnych ustawieniach robi to co powinien smile
Najlepiej trzeba by napisać Makefile do najnowszej wersji Fping-a 3.13 lub przerobić skrypt do własnych potrzeb. Co jest łatwiejsze? To niech każdy oceni wg własnych umiejętności.
EDIT: A jak chcesz mieć 3 stałe adresy zadeklarowane i jeden wprowadzany interaktywnie to dopisz do skryptu #8 następujące linie w odpowiednie miejsce:

#to wstaw przed echo "[`date....
echo "wpisz adres hosta nr.4"
read Host4

#to wstaw pod linijką ping $Host3.....
ping $Host4 -c $N -q >> $multiping &

#tą sekcję wstaw pod linijką P34=`cat $multiping.......
P41=`cat $multiping | awk 'NR==16 { print $2}'`
P42="xmt/rcv/%loss "
xmt4=`cat $multiping |awk 'NR==19 {print $1}'`
rcv4=`cat $multiping |awk 'NR==19 {print $4}'`
loss4=`cat $multiping |awk 'NR==19 {print $7}'`
P43="min/avg/max"
P44=`cat $multiping | awk 'NR==20 { print $4}'`

#to wstaw pod linijką echo "$P31     : $P32= $xmt3/$rcv3/$loss3.......
echo "$P41     : $P42= $xmt3/$rcv3/$loss3     $P43 = $P44 " >> $multiping2

po uruchomieniu:

root@OpenWrt:~# mping
wpisz adres hosta nr.4
www.youtube.pl
[17:16:33]
www.youtube.pl     : xmt/rcv/%loss = 5/5/0%     min/avg/max = 28.034/32.595/48.381 
www.onet.pl        : xmt/rcv/%loss = 5/5/0%     min/avg/max = 28.024/35.270/40.211 
www.google.pl      : xmt/rcv/%loss = 5/5/0%     min/avg/max = 22.921/29.274/35.618 
kernel.org         : xmt/rcv/%loss = 5/5/0%     min/avg/max = 117.699/125.876/138.397

I w ten sposób można ulepszać skrypt wg potrzeb... W końcu to tylko ping smile

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *