Как получить данные трафика RX и TX с помощью сценария оболочки [дубликат]

На этот вопрос уже есть ответ здесь:

Можно ли получить RX / TX из изменения время, как 1 минута, через командную строку?

-1
задан 2 December 2018 в 04:27

1 ответ

Да, много статистических данных, доступных для различных объектов в системе, относительно того, когда она запустилась. Это до пользователя для здания на той информации для извлечения то, в чем они нуждаются. Для Вашего требования это - просто вопрос замечания значений в запуске и конце интервала времен и затем вычислении различия.

Принимая во внимание, что, я обычно делаю это с c программой, в этом случае я использовал сценарий Python, смотрящий на примитивные данные сетевого интерфейса в, например, cat /proc/net/dev:

$ cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
   br0: 863035125 16571440    0    0    0     0          0         0 9122070503 59231752    0    0    0     0       0          0
virbr0-nic:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo:   12444     170    0    0    0     0          0         0    12444     170    0    0    0     0       0          0
enp1s0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
lxcbr0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
virbr0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
enp3s0: 1095035285 16571440    0    0    0     0          0      3023 9121922741 59230702    0    0    0     0       0          0

Сценарий:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#

import re
import time

previous_rx = 0
previous_tx = 0

while True:
    time.sleep(60)
    f = open('/proc/net/dev', 'r')
    data = f.readlines()
    for item in data:
        match=re.search(' br0:\s',item)
        if match is not None:
            if_data = ' '.join(item.split())
            if_data = if_data.split(' ')
            current_rx = if_data[2]
            current_tx = if_data[10]
            diff_rx = float(current_rx) - float(previous_rx)
            diff_tx = float(current_tx) - float(previous_tx)
            diff = diff_rx + diff_tx
            print "rx packets: "+str(diff_rx)+" :   tx packets: "+str(diff_tx)+" : Total packets: "+str(diff)
            previous_rx = current_rx
            previous_tx = current_tx

И так мой сетевой интерфейс, br0: пакеты в минуту были:

rx packets: 16571260.0 :   tx packets: 59231628.0 : Total packets: 75802888.0  <<< My script doesn't initialize properly.
rx packets: 14.0 :   tx packets: 7.0 : Total packets: 21.0
rx packets: 8.0 :   tx packets: 7.0 : Total packets: 15.0
rx packets: 10.0 :   tx packets: 7.0 : Total packets: 17.0
rx packets: 8.0 :   tx packets: 7.0 : Total packets: 15.0
rx packets: 115.0 :   tx packets: 80.0 : Total packets: 195.0
rx packets: 31.0 :   tx packets: 22.0 : Total packets: 53.0
rx packets: 194.0 :   tx packets: 552.0 : Total packets: 746.0
rx packets: 9.0 :   tx packets: 7.0 : Total packets: 16.0
1
ответ дан 27 October 2019 в 00:56

Другие вопросы по тегам:

Похожие вопросы: