2016-07-15 3 views
1

Мы знаем, что некоторая команда linux может получать статистику статистики tcp, такую ​​как «netstat -s -tcp», «ss -s -t», но как получить статистику для одного конкретного интерфейса?Как получить статистику для одного интерфейса с помощью команды linux?

+0

Мне нужно, чтобы получить статистику TCP с определенным интерфейсом, так как интерфейс вверх. – Lucifa

ответ

0

Вы можете использовать tcpstat:

tcpstat - отчет статистики сетевого интерфейса

tcpstat -i <interface>

Если вы хотите, чтобы запустить его, когда интерфейс, вы можете использовать post-up в /etc/network/interfaces:

auto enp4s0f1 
iface enp4s0f1 inet dhcp 
post-up /etc/init.d/tcpstat start enp4s0f1 

/etc/init.d/tcpstat является init.d сценарий, я создал содержащий:

#!/bin/bash 
#title   :tcpstat 
#description :start/stop/restart tcpstat 
######################################### 
### install : cp tcpstat /etc/init.d/ 
#    update-rc.d tcpstat defaults 
### uninstall : update-rc.d -f tcpstat remove 

usage(){ 
    echo "Usage: service tcpstat {start|stop|restart} <interface>" 
} 

DEFAULT_LOCATION="/tmp/dump" 
EXEC="/bin/tcpstat_run" 

if [ ! -z "$2" ]; then 

    if [ ! -z "$3" ]; then 
     STORAGE_FILE="$3" 
    else 
     STORAGE_FILE="${DEFAULT_LOCATION}_$2" 
    fi 

    if [ -f $PID_FILE ]; then 
     echo "file exist" 
    fi 

    case "$1" in 
     start) 
      echo "Starting tcpstat service on inteface $2..." 

      daemonize -E INTERFACE=$2 -E DUMP_FILE=$STORAGE_FILE $EXEC 

      echo -e "\E[31;33m[ OK ]\E[0m" 
      ;; 
     stop) 
      echo "Stopping tcpstat service..." 

      pkill -f "tcpstat -i $2" 

      echo -e "\E[31;33m[ OK ]\E[0m" 
      ;; 
     restart|reload) 
      "$0" stop "$2" 
      "$0" start "$2" 
      ;; 
     *) 
      usage 
      exit 1 
    esac 
else 
    usage 
fi 

exit $? 

Обратите внимание, что я использовал daemonize вместо start-stop-dameon для совместимости RHEL.

daemonize запуск следующего Exec находится в /bin/tcpstat_run:

#!/bin/bash 

tcpstat -i "$INTERFACE" > "$DUMP_FILE"& 

Вы можете изменить эти сценарии по своему вкусу, особенно если вы хотите сохранить дамп в определенном месте & вызвать специальную обработку в post-down.

Например, если вы попытаетесь это сделать, как есть, вы получите следующий вывод:

[email protected]:~$ tail -f /tmp/dump_enp4s0f1 
Time:1468847225 n=9 avg=66.56 stddev=35.76 bps=958.40 
Time:1468847230 n=9 avg=87.33 stddev=40.17 bps=1257.60 
Time:1468847235 n=14 avg=130.50 stddev=66.08 bps=2923.20 
Time:1468847240 n=3 avg=46.00 stddev=0.00 bps=220.80 
Time:1468847245 n=12 avg=58.50 stddev=11.26 bps=1123.20 
Time:1468847250 n=9 avg=115.78 stddev=78.32 bps=1667.20 
Time:1468847255 n=169 avg=135.22 stddev=188.26 bps=36564.80 
+0

Эта команда является «стандартной» командой, которая содержится в большинстве основных дистрибутивов Linux? – Lucifa

+0

Нет, он не установлен по умолчанию в дистрибутивах Linux, но доступен в большинстве диспетчеров пакетов. –

+0

«tcpstat -i » может выполнять прямой захват с помощью определенного интерфейса, но как получить статистические данные с интерфейса? – Lucifa

Смежные вопросы