Как получить данные трафика RX и TX с помощью сценария оболочки
Можно ли получить RX/TX от времени изменения, например, 1 минуты через командную строку?
1 ответ
Да, многие статистические данные, доступные для различных элементов в системе, относятся к тому, когда она началась. Пользователь может использовать эту информацию, чтобы извлечь то, что ему нужно. Для вашего требования это просто вопрос отметки значений в начале и конце временного интервала, а затем расчета разницы.
Принимая во внимание, что я обычно делаю это с программой переменного тока, в этом случае я использовал скрипт 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