24 votes

Comment obtenir des statistiques réseau en temps réel sous Linux au format KB/MB/Bytes et pour un port ou un processID d'application spécifique ?

J'ai utilisé IPTraf , Iftop , vnstat , bwm-ng , ifconfig -a . Aucun d'entre eux ne m'aide à trouver les paquets en temps réel qui sont envoyés/reçus de mon application au format KB ou MB. La raison en est que je suis en train d'écrire une application où j'ai besoin d'être très sûr que ma compression est correcte, mais je ne peux pas tester pour avancer.

Qu'est-ce que je peux utiliser pour suivre des statistiques très spécifiques et précises sur le réseau en temps réel ?

enter image description here

0voto

Dagelf Points 732

Par application peut être fait avec une règle de pare-feu utilisant xtables et une modification de ce qui suit.

Cela ne répond pas à la question "par application" mais seulement à celle "par interface".

Vous trouverez ci-dessous un script qui fonctionne sur la plupart des routeurs Linux intégrés tels que ceux compatibles avec Ubiquiti et OpenWRT et qui obtient ses détails à partir de /proc/net/dev.

(Et facile à changer en paquets, etc.)

#!/bin/sh

SLP=1 # output / sleep interval
DEVICE=$1
IS_GOOD=0
for GOOD_DEVICE in `grep \: /proc/net/dev | awk -F: '{print $1}'`; do
    if [ "$DEVICE" = $GOOD_DEVICE ]; then
        IS_GOOD=1
        break
    fi
done

if [ $IS_GOOD -eq 0 ]; then
    echo "Device not found. Should be one of these:"
        grep ":" /proc/net/dev | awk -F: '{print $1}' | sed s@\ @@g 
    exit 1
fi

while true; do

LINE=`grep $1 /proc/net/dev | sed s/.*://`;
RECEIVED1=`echo $LINE | awk '{print $1}'`
TRANSMITTED1=`echo $LINE | awk '{print $9}'`
TOTAL=$(($RECEIVED1+$TRANSMITTED1))

sleep $SLP

LINE=`grep $1 /proc/net/dev | sed s/.*://`;
RECEIVED2=`echo $LINE | awk '{print $1}'`
TRANSMITTED2=`echo $LINE | awk '{print $9}'`
SPEED=$((($RECEIVED2+$TRANSMITTED2-$TOTAL)/$SLP))
INSPEED=$((($RECEIVED2-$RECEIVED1)/$SLP))
OUTSPEED=$((($TRANSMITTED2-$TRANSMITTED1)/$SLP))

printf "In: %12i KB/s | Out: %12i KB/s | Total: %12i KB/s\n" $(($INSPEED/1024)) $(($OUTSPEED/1024)) $((($INSPEED+$OUTSPEED)/1024)) ;

done;

Copiez ce qui précède dans votre presse-papiers puis dans une session de terminal sur votre routeur :

$ cat > /tmp/n.sh

alors : Ctrl+V (ou clic droit / Coller)

alors : Ctrl+D

$ chmod +x /tmp/n.sh

$ /tmp/n.sh eth0

Vous pouvez également le coller dans un bloc-notes, puis répéter l'opération ci-dessus si vous devez le modifier - tous les routeurs intégrés ne disposent pas d'un éditeur ! Veillez à tout copier, du # en haut au done ; en bas.

L'exemple netpps ci-dessus est excellent, mais tous les périphériques n'ont pas un système de fichiers /sys monté. Vous devrez peut-être aussi changer le /bin/bash en /bin/sh ou vice versa.

Source : https://gist.github.com/dagelf/ab2bad26ce96fa8d79b0834cd8cab549

0 votes

Veuillez ne pas publier la même réponse à plusieurs questions. Si la même information répond réellement aux deux questions, alors l'une d'entre elles (généralement la plus récente) doit être fermée en tant que doublon de l'autre. Vous pouvez l'indiquer en voter pour le fermer en tant que doublon ou, si vous n'avez pas assez de réputation pour ça, hisser un drapeau pour indiquer qu'il s'agit d'un doublon. Sinon, adaptez votre réponse à cette question et ne collez pas la même réponse à plusieurs endroits.

0 votes

S'il a été personnalisé, cela s'est produit après que les messages aient été marqués automatiquement par le système. Je n'ai pas le temps de lire chaque mot pour voir s'ils sont personnalisés ou non.

1 votes

La seule personnalisation que vous avez faite est d'ajouter deux phrases au début de votre réponse. Le reste semble identique. Et ces deux phrases n'étaient pas dans la réponse originale telle qu'elle a été postée - c'est pourquoi elle a été automatiquement signalée comme une réponse dupliquée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X