Как отобразить сетевой трафик в терминале?

Вопрос или проблема

как отобразить текущий сетевой трафик (беспроводной) в терминале?

Также: возможно ли добавить эту информацию на график top?

Вот несколько полезных инструментов из репозиториев Ubuntu для мониторинга сетевого трафика через командную строку:

bmon

Показывает сразу несколько интерфейсов

скриншот

slurm

Имеет красивые цветные графики

скриншот

tcptrack

Любимый инструмент. Показывает, сколько полосы пропускания используется, а также какой протокол (сервис/порт) и куда идет передача. Очень полезно, когда вы хотите точно знать, что именно потребляет вашу полосу пропускания

скриншот

iftop

Это довольно просто! Установите “iftop” с помощью:

sudo apt install iftop

Затем запустите

sudo iftop

Приложение выглядит так:

скриншот

Nethogs

sudo apt install nethogs

sudo nethogs

Что делает этот инструмент отличным, так это то, что он показывает трафик по процессам, как показано на изображении

скриншот

Существует полезный инструмент под названием speedometer, который отображает график в терминале с использованием блоков юникода, цветов и даже добавляет метки к каждому пику на графике.

$ sudo apt-get install speedometer
$ speedometer -l  -r wlan0 -t wlan0 -m $(( 1024 * 1024 * 3 / 2 ))

скриншот после выполнения предыдущей команды

Он имеет несколько опций, может мониторить несколько интерфейсов, может показывать несколько графиков в нескольких строках или столбцах и даже может мониторить скорость загрузки одного файла (следя за размером файла на диске).

iptraf

IPTraf — это утилита на основе консоли для сбора статистики сетевого трафика в Linux. Она
собирает различные данные, такие как количество пакетов и байтов в TCP-соединениях,
статистика интерфейсов и индикаторы активности, разбивка трафика TCP/UDP
и количество пакетов и байтов по станциям в локальной сети.

Особенности

Мониторинг IP-трафика, который показывает информацию о проходящем через вашу сеть IP-трафике. Включает информацию о флагах TCP, количество пакетов и байтов,
подробности ICMP, типы пакетов OSPF. Общая и подробная
статистика интерфейсов, включая подсчет пакетов IP, TCP, UDP, ICMP, не-IP и других пакетов IP,
ошибки контрольной суммы IP, активность интерфейса, подсчет размеров пакетов. Мониторинг TCP и UDP службы, показывающий подсчет входящих и исходящих пакетов для общих портов приложений TCP и UDP. Модуль статистики LAN, который обнаруживает активные хосты и показывает статистику
активности передачи данных на них. Фильтры отображения протоколов TCP, UDP и других, позволяющие вам видеть только тот трафик, который вас интересует.
Журналирование Поддерживает интерфейсы Ethernet, FDDI, ISDN, SLIP, PPP и loopback.
Использует встроенный интерфейс необработанных сокетов ядра Linux, что позволяет использовать его в широком диапазоне поддерживаемых
сетевых карт. Полноэкранная, меню-наблюдаемая операция.

Распознаваемые протоколы

IP TCP UDP ICMP IGMP IGP IGRP OSPF ARP RARP

Не-IP пакеты просто
будут показаны как “Не-IP”, а на сетях Ethernet LAN будут представлены с
соответствующими адресами Ethernet.

Поддерживаемые интерфейсы

Локальная петля Все поддерживаемые Linux интерфейсы Ethernet Все
поддерживаемые FDDI интерфейсы Linux SLIP Асинхронный PPP Синхронный PPP
через ISDN ISDN с инкапсуляцией Raw IP ISDN с инкапсуляцией Cisco HDLC
Параллельный IP по линии

Источник http://iptraf.seul.org/about.html

Установка

С помощью apt:

apt-get install iptraf

Или скачайте исходный код:

http://iptraf.seul.org/download.html

Скриншоты

Текущие соединения:

tcp-соединения

Текущие порты:

введите описание изображения здесь

Сводка всех интерфейсов:

введите описание изображения здесь

Подробно по интерфейсам:

введите описание изображения здесь

Источник http://iptraf.seul.org/shots.html

tcpdump -i eth0 

Это даст вам поток информации обо всех данных, протекающих через этот интерфейс (ваша сетевая карта). По сути как wireshark.

Используйте ifconfig, чтобы увидеть список ваших интерфейсов.

Я думаю, ifconfig [interface] сделает это. Вот так:

gevorg@gevorg-TravelMate-3260:~$ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:18:de:89:52:71  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

gevorg@gevorg-TravelMate-3260:~$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:36:bf:92:e3  
          inet addr:192.168.10.100  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::216:36ff:febf:92e3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:342765 errors:0 dropped:0 overruns:0 frame:0
          TX packets:306183 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:373934806 (373.9 MB)  TX bytes:39111569 (39.1 MB)
          Interrupt:16 

Показывает RX bytes:73934806 (373.9 MB) и TX bytes:39111569 (39.1 MB).

Если вам нужно что-то простое, но всё же полезное, попробуйте ifstat

$ sudo apt-get install ifstat
$ ifstat
       eth0               wlan0       
 KB/s вход    KB/s выход   KB/s вход  KB/s выход
    0.00      0.00      0.96      4.79
    0.00      0.00      0.04      0.14

Это приложение мониторит все интерфейсы сразу, выводя новую строку каждую секунду. Полезно для передачи в другой скрипт или для того, чтобы оставить работающим и наблюдать за использованием полосы пропускания в течение времени. Не так красиво, как другие инструменты, но отлично справляется со своей задачей.

Есть несколько полезных опций, описанных в manpage:

-z  Скрывает интерфейсы, счетчики которых равны нулю, например, интерфейсы, которые включены, но не используются.
-n  Отключает периодическое отображение заголовка.
-t  Добавляет временную метку в начале каждой строки.
-T  Показывает общую пропускную способность для всех мониторимых интерфейсов.
-S  Обновляет статистику на той же строке, если возможно (без прокрутки и переноса).
-b  Показывает пропускную способность в kbits/sec вместо kbytes/sec.

Еще один полезный инструмент — sar.
Установите его с помощью команды

apt install sysstat

Как использовать:

sar -n DEV  1

А также удивительное руководство по графикам от Брэндана:
введите описание изображения здесь

Ссылки

Это не только про сети, но Glances может отображать сетевой трафик разных интерфейсов.

введите описание изображения здесь

Установите его с одной из этих команд:

sudo snap install glances
sudo apt install glances

Согласно ifconfig man:

Эта программа устарела! В качестве замены посмотрите ip addr и ip
link. Для статистики используйте ip -s link.

Итак, используя команду ip:

 $ ip -s link

Мы можем получить сетевую статистику:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    173654497900 26078946 0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    173654497900 26078946 0       0       0       0
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 12:34:56:78:90:00 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    3650412438854 399476618 0       2551849 0       0
    TX: bytes  packets  errors  dropped carrier collsns
    617437624480 321390259 0       0       0       0

Или

$ ip -s -h link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 addrgenmode eui64
    RX: bytes  packets  errors  dropped overrun mcast
    174G       26.1M    0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    174G       26.1M    0       0       0       0 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 12:34:56:78:90:00 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
    RX: bytes  packets  errors  dropped overrun mcast
    3.65T      399M     0       2.55M   0       0
    TX: bytes  packets  errors  dropped carrier collsns
    617G       321M     0       0       0       0

Установите ‘vnstat’, он может показать трафик для интерфейса. Вы можете установить некоторые пакеты для построения графиков, чтобы получить красивые графики.

Также вы можете использовать утилиту iftop

Ifstat — это хороший инструмент, и он предоставит вам всю статистику использования сетевых интерфейсов по времени.

sudo apt-get install ifstat

введите описание изображения здесь

Мощный инструмент bpytop, как швейцарский нож:

Установка:

sudo apt install bpytop

Список интерфейсов:

ip -br -c a

Мониторинг всех ресурсов:

bpytop

Также вы можете настроить схему вывода с использованием чисел:

{1,2,3,4}

введите описание изображения здесь

Другой возможный инструмент называется nload.
http://linux.die.net/man/1/nload

Подобен slurm или bmon, но немного более упрощенный.

Существует также инструмент под названием bandwhich

гифка

А вот блог, посвященный списку команд для мониторинга пропускной способности:

http://www.binarytides.com/linux-commands-monitor-network/

ОБНОВЛЕНИЕ:

Я использую NetHogs уже пару месяцев. Он показывает общее использование полосы пропускания.
С помощью следующей настройки вы можете дополнительно получить использование полосы пропускания для каждого приложения

sudo nethogs -v 3

Недавно я обнаружил wavemon, который легко установить с помощью apt-get install wavemon.

Этот инструмент предоставляет информацию, в частности, об уровне сигнала беспроводной сети.

Это работает без необходимости установки чего-либо особенного и без необходимости быть root:

for i in {1..60};do echo `ifconfig eth0 | grep X.pa`;sleep 1;done 

замените eth0 на любой интерфейс, который вы хотите проверить.

пример вывода:-

RX пакеты 7838573576 байты 5261871317174 (4.7 TiB) TX пакеты 5420075700 байты 2937680670358 (2.6 TiB)
RX пакеты 7838574080 байты 5261871493163 (4.7 TiB) TX пакеты 5420076058 байты 2937680745341 (2.6 TiB)
RX пакеты 7838574496 байты 5261871573887 (4.7 TiB) TX пакеты 5420076379 байты 2937680870613 (2.6 TiB)

Другой интересный вариант, написанный на языке Rust, это bottom.

Установка

Файл .deb предоставляется на каждом стабильном выпуске и в ночных сборках для x86, aarch64 и armv7. Некоторые примеры установки таким образом:

# x86-64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom_0.10.2-1_amd64.deb
sudo dpkg -i bottom_0.10.2-1_amd64.deb

# ARM64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom_0.10.2-1_arm64.deb
sudo dpkg -i bottom_0.10.2-1_arm64.deb

# ARM
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom_0.10.2-1_armhf.deb
sudo dpkg -i bottom_0.10.2-1_armhf.deb

# musl-based
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom-musl_0.10.2-1_amd64.deb
sudo dpkg -i bottom-musl_0.10.2-1_amd64.deb

Использование

btm

введите описание изображения здесь

nettop — это еще один вариант (не входит в стандартные репозитории linux).

Чтобы собрать, клонируйте репозиторий:

git clone https://github.com/Emanem/nettop.git

Установите зависимости:

sudo apt-get install libncurses5-dev libncursesw5-dev build-essential libpcap-dev

И создайте бинарный файл:

make

Запустите с помощью:

sudo ./nettop

Кстати, macOS имеет встроенную утилиту под названием nettop, которая делает то же самое, но имеет больше функционала.

Для меня Slurm работал хорошо:

введите описание изображения здесь

Установка:

sudo apt install slurm

Список интерфейсов

ifconfig

Мониторинг интерфейса (измените eth0):

slurm -i eth0

Существует также conky.

Возможно, у вас уже установлен пакет в текущих репозиториях вашей системы. Попробуйте выполнить:

sudo apt-get install conky-all

Некоторая начальная информация о настройке: Документация сообщества Ubuntu: Настройка Conky. ВНИМАНИЕ: Информация на этом сайте может быть устаревшей, поэтому проверьте, применимы ли шаги, указанные там, к вашей системе.

Конечно, базовый conky очень скучен для просмотра, поэтому вот хорошая тема conky, чтобы начать:

conky_themes: Просто следуйте инструкциям на этой странице для настройки; чтобы установить конкретную тему, скопируйте файл .conkyrc из соответствующей папки темы в папке .harmattan-themes в ваш домашний каталог.

Затем отредактируйте файл согласно инструкциям на связанной странице.

СОВЕТ: Измените файл после копирования его в ваш домашний каталог, так вы сохраните оригинал неизменным, если вам понадобится скопировать файл .conkyrc темы снова.

Получите ответ напрямую из процесса: cat /proc/net/dev
можно легко отфильтровать по строкам для получения конкретного интерфейса, например,
cat /proc/net/dev | grep eth0

Интерф |   Прием                                                |  Передача
 фейс |байты    пакеты ошибки дроп fifo фрейм сжато мультикаст|байты    пакеты ошибки дроп fifo коллизии carrier сжато
    lo:  176979    1003    0    0    0     0          0         0   176979    1003    0    0    0     0       0          0
  eth0: 58424096 208513    0  428    0     0          0         0 53857573  355931    0    0    0     0       0          0

VnStat — это полнофункциональная программа на основе командной строки для мониторинга сетевого трафика и использования полосы пропускания в реальном времени в системах Linux и BSD.

Установка:

sudo apt install sysstat

Если вы не можете установить приложения или находитесь на очень ограниченной системе, вы можете использовать это.

watch ifconfig

или если вы хотите мониторить конкретный интерфейс

watch ifconfig eth0

Он будет обновляться каждые 2 секунды, показывая общий объем переданных данных на интерфейсе RX и TX. Не очень эффектно, но если вы просто хотите убедиться, что данные передаются, и оценить скорость, вы можете посмотреть статистику RX и TX:

Каждые 2.0s: ifconfig enxc03ebaa1c64e                          simon-XPS-15-7590: Tue Jan 14 09:18:49 2025

enxc03ebaa1c64e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.136.7  netmask 255.255.0.0  broadcast 172.16.255.255
        inet6 fdfd:f92:7669:0:6646:8a79:5e74:b0af  prefixlen 64  scopeid 0x0<global>
        inet6 fdfd:f92:7669::1bc  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::cb87:8138:699b:5462  prefixlen 64  scopeid 0x20<link>
        inet6 fdfd:f92:7669:0:89e8:cb34:8787:d688  prefixlen 64  scopeid 0x0<global>
        ether c0:3e:ba:a1:c6:4e  txqueuelen 1000  (Ethernet)
        RX packets 284886  bytes 134356876 (134.3 MB)
        RX errors 0  dropped 1222  overruns 0  frame 0
        TX packets 55743  bytes 21461153 (21.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

.

Ответ или решение

Для отображения сетевого трафика в терминале, особенно по беспроводному соединению, можно воспользоваться множеством инструментов, доступных в репозиториях Ubuntu. Ниже представлены некоторые популярные утилиты, которые помогут вам проанализировать сетевой трафик непосредственно через командную строку.

Теория (Theory)

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

Примеры (Example)

  1. iftop — утилита для отображения использования полосы пропускания. Устанавливается командой:

    sudo apt install iftop
    sudo iftop

    Она отображает данные в реальном времени о трафике через интерфейс, показывая IP-адреса источников и получателей.

  2. nethogs — анализирует использование сети в разрезе процессов. Установка:

    sudo apt install nethogs
    sudo nethogs

    Этот инструмент полезен для понимания, какие приложения потребляют больше всего сетевых ресурсов.

  3. bmon — исключительное средство для мониторинга нескольких интерфейсов одновременно с удобным графическим интерфейсом. Установка:

    sudo apt install bmon
    bmon

    Подходит для наблюдения общей картины сетевой активности.

  4. tcptrack — ориентирован на отслеживание TCP-соединений и полезен для глубокого анализа трафика. Команда для установки:

    sudo apt install tcptrack
    sudo tcptrack -i <интерфейс>
  5. vnstat — утилита для мониторинга статистики сетевого трафика, включая дневную, недельную и месячную отчетность. Установка:

    sudo apt install vnstat
    vnstat

Применение (Application)

Выбор подходящего инструмента зависит от целей мониторинга. Например, если вам необходимо быстрые данные в реальном времени для анализа потока пакетов — iftop или tcptrack могут быть полезны. Если требуется долгосрочный мониторинг с возможностью анализа больших объемов данных и построения отчётов, лучше использовать vnstat.

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

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

Оцените материал
Добавить комментарий

Капча загружается...