Monitoruj natężenie ruchu sieciowego przez interfejs

17

Czy istnieje sposób monitorowania ruchu (np. Uzyskanie podglądu wykorzystania na żywo) za pośrednictwem określonego interfejsu sieciowego, powiedzmy eth0?

Problem polega na tym, że zestaw narzędzi na pudełku jest stały i jest prawie zwykłym wdrożeniem RHEL, więc nie można używać narzędzi dodatkowych.

Szukasz czegoś podstawowego i zwykle obecnego, takiego jak iostat tutaj.

BeeOnRope
źródło
1
Zajrzyj na stackoverflow.com/questions/596590/… . Niektóre z sugestii powinny być przydatne.
Andy Smith
Nie, wyszukiwanie nie powiodło się (i próbowałem). Szczerze mówiąc, myślę, że to pytanie o
awarię serwera

Odpowiedzi:

15

Dane, które chcesz zobaczyć, pokazują się w starym dobrym ifconfig.

watch ifconfig eth0

lub żeby lepiej się wyróżniało:

watch -n 1 -d ifconfig eth0
Joel K.
źródło
Dzięki - to oprócz komentarza @ user239558 było w sam raz. Przyjmuję twoją odpowiedź, odkąd jako pierwszy wspomniałeś ifconfig.
BeeOnRope
Spot on. Jest to coś, czego szukałem i chociaż na wielu forach jest wiele podobnych pytań, jest to pierwsza znaleziona przeze mnie odpowiedź.
Hazok
ifconfig nie znajduje się w domyślnej ścieżce. / sbin / ifconfig może być wymagany.
kevinf
4

Bez instalowania nowych narzędzi:

while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done

użytkownik239558
źródło
4

na Linuksie po 2015 roku może być lepiej watch -n1 -d ip -s link show [interface]

massemanet
źródło
2

Istnieje wiele narzędzi:

  1. Nethogs
  2. iptraf
  3. Iptables może być dobrym rozwiązaniem, ale jeśli używasz zapory sieciowej, trochę trudno będzie poprawnie przenieść reguły
dSoultanis
źródło
iptraf jest dokładnie tym, czego szukałem. Ale ostatnie wydanie wydaje się być w IPTraf 3.0.0 - 19 września 2005 r. Czy to może być problem?
Al-Alamin,
2

Możesz także użyć iptables, aby tak myśleć:

iptables -A INPUT -p tcp --dport $port -i eth0

i

iptables -A OUTPUT -p tcp --sport $port -i eth0

Następnie iptables -L -n -v wypisze ci liczbę pakietów przechodzących przez interfejs, iptables -Z wyzeruje tę liczbę

Filip
źródło
Łańcuch wyjściowy powinien mieć -o jako interfejs, -i jest nielegalny
drake7707
2
function humanValue()
{
    h=( '' K M G T P )
    i=1; v=$(( $1 * 8 ))
    while [ $v -gt $(( 1 << 10 * i )) ]; do let i++; done;
    echo -n "$(( $v >> 10 * --i )) ${h[i]}b/s";
}
ifaces=$(ip addr | grep -E "^[0-9]:" | cut -d" " -f2 | tr -d \:)
declare -A RX2 TX2;
while sleep 1; 
do
    date 
    for INTERFACE in $ifaces;
    do
        RX1=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
        TX1=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
        DOWN=$(( RX1 - RX2[$INTERFACE] ))
        UP=$(( TX1 - TX2[$INTERFACE] ))
        RX2[$INTERFACE]=$RX1; TX2[$INTERFACE]=$TX1
        echo -e "[ $INTERFACE:\tRX: $(humanValue $DOWN)\t|\tTX: $(humanValue $UP) ]"
    done;
done;
tona
źródło
1

Spójrz na ntop. Zapewnia wiele szczegółowych danych.

Mikołaj
źródło