我可以通过从终端获取总网络使用情况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 MB对于 rx 和3.6 MB与 tx 一起使用命令输出kde 面板中的 plasmoid。我怎样才能得到它?
PS:任何解析 ifconfig 输出的 bash 脚本或任何应用程序给出的值都是可以接受的
答案1
更明显的方法是使用 Grep 仅提取值。
# RX bytes ifconfig wlp0s20f3 | grep -o '[0-9.]* MiB' | head -n1 # TX bytes ifconfig wlp0s20f3 | grep -o '[0-9.]* MiB' | tail -n1
一个更优雅的替代方法是从目录中获取值(以字节为单位)
/sys/class/net/wlp0s20f3/statistics/
。cat /sys/class/net/wlp0s20f3/statistics/rx_bytes cat /sys/class/net/wlp0s20f3/statistics/tx_bytes
答案2
你可以得到stats(包括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
。
答案3
除了@卡西莫多的回答:
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