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