Как получить общее использование сети в терминале с момента открытия компьютера

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

Вывод:

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.67  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::5f55:a45c:b66a:a7d2  prefixlen 64  scopeid 0x20<link>
        ether 48:f1:7f:f3:15:83  txqueuelen 1000  (Ethernet)
        RX packets 82724  bytes 108476705 (103.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28959  bytes 3840172 (3.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Мне нужно только 103,4 МБ для rx и 3,6 МБ для tx, чтобы использовать его вместе с выводом команды плазмоид в панели kde. Как я могу это получить?

PS: Любой сценарий bash для анализа вывода ifconfig или любое приложение дает приемлемые значения

0
задан 14 October 2020 в 22:47

3 ответа

  • Более очевидный путь - использовать Grep для извлечения только значений.

     # RX bytes
    ifconfig wlp0s20f3 |  grep -o '[0-9.] * MiB' |  голова -n1
     # Байтов TX
    ifconfig wlp0s20f3 |  grep -o '[0-9.] * MiB' |  хвост -n1
     
  • Более элегантный вариант - получить значения (в байтах) из каталога / sys / class / net / wlp0s20f3 / statistics / .

     cat / sys / class / net / wlp0s20f3 /  статистика / rx_bytes
    кошка / система / класс / сеть / wlp0s20f3 / статистика / tx_bytes
     
3
ответ дан 4 January 2021 в 08:19

Вы можете получить s tats (включая байты TX / RX и количество пакетов) в h единицах, считываемых человеком, из ip link команда:

ip -s -h link show

Чтобы ограничить вывод определенным устройством, используйте поле dev :

$ ip -h -s link show dev wls1
3: wls1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 00:21:6a:96:40:12 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    4.52G      5.03M    0       1       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    357M       2.16M    0       0       0       0

Это не самый простой вывод для надежного синтаксического анализа, но вы, вероятно, можете использовать что-то вроде

$ ip -s -h link show dev wls1 | 
    awk '/RX: bytes/{getline; printf "RX: %s, ", $1} /TX: bytes/{getline; printf "TX: %s\n",$1}'
RX: 4.52G, TX: 357M

Замените wls1 своим именем интерфейса wlp0s20f3 .

1
ответ дан 4 January 2021 в 08:19

Дополнение к ответу @Quasimodo :

echo "Down: $(($(cat /sys/class/net/wlp0s20f3/statistics/rx_bytes)/1024/1024)) MiB, Up: $(($(cat /sys/class/net/wlp0s20f3/statistics/tx_bytes)/1024/1024)) MiB"

дает в точности то, что я хочу. (wlp0s20f3) - мое устройство.

Результат:

Down: 103 MiB, Up: 4 MiB
0
ответ дан 4 January 2021 в 08:19

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

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