Monitoree el volumen del tráfico de red a través de la interfaz

17

¿Hay alguna manera de monitorear el tráfico (por ejemplo, obtener una vista en vivo de la utilización) a través de una interfaz de red en particular, por ejemplo eth0?

El problema aquí es que el conjunto de herramientas en la caja es fijo, y es más o menos una implementación de RHEL estándar, por lo que no se pueden usar herramientas adicionales.

Buscando algo básico y generalmente presente como iostat aquí.

BeeOnRope
fuente
1
Eche un vistazo a stackoverflow.com/questions/596590/… . Algunas de las sugerencias allí deberían ser útiles.
Andy Smith
Oh, la búsqueda falla (y lo intenté). Para ser justos, creo que es una pregunta serverfault, no un SO :)
BeeOnRope

Respuestas:

15

Los datos que desea ver se muestran en el viejo ifconfig.

watch ifconfig eth0

o para que las cosas se destaquen mejor:

watch -n 1 -d ifconfig eth0
Joel K
fuente
Gracias, esto además del comentario de @ user239558 fue correcto. Estoy aceptando tu respuesta ya que fuiste el primero en mencionarlo ifconfig.
BeeOnRope
Correcto. Esto es algo que he estado buscando y, aunque hay muchas preguntas similares a esto en diferentes foros, esta es la primera respuesta que encontré que lo clava.
Hazok
ifconfig no está en la ruta predeterminada. / sbin / ifconfig puede ser requerido.
kevinf
4

Sin instalar nuevas herramientas:

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

user239558
fuente
4

en post-2015 más o menos Linux esto podría ser mejor watch -n1 -d ip -s link show [interface]

massemanet
fuente
2

Hay muchas utilidades:

  1. Nethogs
  2. iptraf
  3. Iptables puede ser una buena solución, pero si está utilizando un firewall configurado, será un poco difícil reubicar correctamente las reglas.
dSoultanis
fuente
iptraf es exactamente lo que estaba buscando. Pero su último lanzamiento parece estar en IPTraf 3.0.0 - 19 de septiembre de 2005. ¿Puede ser esto un problema?
Al-Alamin
2

También puede usar iptables para hacer tal pensamiento:

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

y

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

Luego, iptables -L -n -v le imprimirá cuántos paquetes han pasado por la interfaz, iptables -Z a cero este recuento

philippe
fuente
La cadena de salida debe tener -o como interfaz, -i es ilegal
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;
tonelada
fuente
1

Echa un vistazo a ntop. Proporciona muchos datos detallados.

Nicholas
fuente