Вопрос или проблема
как отобразить текущий сетевой трафик (беспроводной) в терминале?
Также: возможно ли добавить эту информацию на график 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
Скриншоты
Текущие соединения:
Текущие порты:
Сводка всех интерфейсов:
Подробно по интерфейсам:
Источник 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}
- btop: github.com
- bpytop: github.com
Другой возможный инструмент называется 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)
-
iftop — утилита для отображения использования полосы пропускания. Устанавливается командой:
sudo apt install iftop sudo iftop
Она отображает данные в реальном времени о трафике через интерфейс, показывая IP-адреса источников и получателей.
-
nethogs — анализирует использование сети в разрезе процессов. Установка:
sudo apt install nethogs sudo nethogs
Этот инструмент полезен для понимания, какие приложения потребляют больше всего сетевых ресурсов.
-
bmon — исключительное средство для мониторинга нескольких интерфейсов одновременно с удобным графическим интерфейсом. Установка:
sudo apt install bmon bmon
Подходит для наблюдения общей картины сетевой активности.
-
tcptrack — ориентирован на отслеживание TCP-соединений и полезен для глубокого анализа трафика. Команда для установки:
sudo apt install tcptrack sudo tcptrack -i <интерфейс>
-
vnstat — утилита для мониторинга статистики сетевого трафика, включая дневную, недельную и месячную отчетность. Установка:
sudo apt install vnstat vnstat
Применение (Application)
Выбор подходящего инструмента зависит от целей мониторинга. Например, если вам необходимо быстрые данные в реальном времени для анализа потока пакетов — iftop
или tcptrack
могут быть полезны. Если требуется долгосрочный мониторинг с возможностью анализа больших объемов данных и построения отчётов, лучше использовать vnstat
.
В случае интеграции данных о сетевом трафике в такие инструменты, как top
, этого, как правило, невозможно сделать напрямую ввиду особенностей дизайна top
. Однако альтернативой может служить использование комплексных систем мониторинга, таких как Glances
, которые включают информацию о системе и сети в одном окне.
В заключение, выбор инструмента для мониторинга сетевого трафика в терминале зависит от вашей операционной среды и конкретных требований к информации, которую вы хотите получить от сети.