36 lines
859 B
Bash
Executable File
36 lines
859 B
Bash
Executable File
#!/bin/bash
|
|
|
|
INTERFACE=$(ip route get 8.8.8.8 2>/dev/null | awk '{print $5; exit}')
|
|
[ -z "$INTERFACE" ] && INTERFACE="eth0"
|
|
|
|
RX_PATH="/sys/class/net/$INTERFACE/statistics/rx_bytes"
|
|
TX_PATH="/sys/class/net/$INTERFACE/statistics/tx_bytes"
|
|
|
|
OUTFILE="/tmp/waybar_net_speed_output"
|
|
|
|
prev_rx=$(cat "$RX_PATH")
|
|
prev_tx=$(cat "$TX_PATH")
|
|
prev_time=$(date +%s)
|
|
|
|
while true; do
|
|
sleep 1
|
|
|
|
cur_rx=$(cat "$RX_PATH")
|
|
cur_tx=$(cat "$TX_PATH")
|
|
cur_time=$(date +%s)
|
|
|
|
drx=$((cur_rx - prev_rx))
|
|
dtx=$((cur_tx - prev_tx))
|
|
dt=$((cur_time - prev_time))
|
|
|
|
if (( dt > 0 )); then
|
|
rx_mbps=$(awk "BEGIN { printf \"%.1f\", $drx * 8 / 1024 / 1024 / $dt }")
|
|
tx_mbps=$(awk "BEGIN { printf \"%.1f\", $dtx * 8 / 1024 / 1024 / $dt }")
|
|
echo " ${rx_mbps}Mbit/s ${tx_mbps}Mbit/s" > "$OUTFILE"
|
|
fi
|
|
|
|
prev_rx=$cur_rx
|
|
prev_tx=$cur_tx
|
|
prev_time=$cur_time
|
|
done
|