Reputation: 75
How can I find and store as variables the two numbers followed by "RX bytes:"
and "TX bytes:"
in this file?
I want to calculate with theese values in a simple current bandwidth monitor bash script using an OpenWrt router.
/dev/band1:
br-lan Link encap:Ethernet HWaddr
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3848954 errors:0 dropped:21234 overruns:0 frame:0
TX packets:4213574 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1206316927 (1.1 GiB) TX bytes:3385060741 (3.1 GiB)
Thank you for your help!
Upvotes: 0
Views: 1064
Reputation: 626
#!/bin/bash
N=(`ifconfig p2p1 | sed -n 's/.*RX bytes:\([0-9]*\) .*TX bytes:\([0-9]*\).*/\1\n\2/p'`)
echo Bytes received ${N[0]}
echo Bytes sent ${N[1]}
This does it with one call to ifconfig, which is probably only important if you want to poll the counters at the same time.
Upvotes: 1
Reputation: 195229
for example, the RX bytes, you could:
rxBytes=$(yourcmd|grep -Po '(?<=RX bytes:)\d+')
replace the RX with TX you get another variable
EDIT
you could also go with awk:
rxBytes=$(awk -F'RX bytes:' 'NF>1{sub(/ .*$/,"",$2);print $2}')
chg the RX -> TX to get the other one.
Upvotes: 3