Live RX и TX ставки в Linux

Я ищу способ программно (будь то вызов библиотеки или автономной программы) отслеживать живой IP-трафик в Linux. Я не хочу итогов, я хочу текущую используемую полосу пропускания. Я ищу инструмент, похожий (но не графический) на монитор сетевого трафика в меню OS X. istat.

Я совершенно уверен, что что-то подобное существует, но я не уверен, где искать, и мне не нужно изобретать велосипед.

Это так просто, как мониторинг сокета? Или мне нужна утилита, которая обрабатывает много накладных расходов для меня?

Ответы на вопрос(3)

используя следующиеdstat команда:

dstat -n --net-packets -f 10

Или, если вы хотите контролировать определенные интерфейсы, вы можете сделать:

dstat -n --net-packets -N eth0,wlan0 10

Если вы предпочитаете более обычныйbits per second выход:

dstat -n --net-packets -N eth0,wlan0 --bits 10

Это даст вам 10 секунд в среднем. Если вы предпочитаете выписать это для последующей обработки, вы можете экспортировать в файл CSV, используя:

dstat -n --net-packets -N eth0,wlan0 --bits 10

Dstat поставляется с множеством плагинов для соотнесения этих метрик с другими метриками в вашей системе, и это дает вам гибкость в добавлении ваших собственных (python) плагинов, если вам нужно настроить данные или отслеживать что-то специфическое для вашей среды.

dstat Он сочетает в себе много "stat" как функции в 1 быстрый вывод. Очень настраиваемый. Это даст вам текущую пропускную способность сети, а также многое другое.

В Linux программаnetstat даст вам сырой сетевой статистики. Вы можете проанализировать эту статистику самостоятельно, чтобы получить значимый вывод (что и делает dstat).

Решение Вопроса

import time

last={}

def diff(col): return counters[col] - last[iface][col]

while True:
  print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent")
  for line in open('/proc/net/dev').readlines()[2:]:
    iface, counters = line.split(':')
    counters = map(int,counters.split())
    if iface in last:
      print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9))

    last[iface] = counters

  time.sleep(1)
 helloandre13 июл. 2009 г., 17:13
идеально! Спасибо большое
 13 июл. 2009 г., 16:51
А в ядре 2.6 более подробная статистика для каждого устройства приведена в/sys/class/net/$dev/statistics

Ваш ответ на вопрос