2017-11-22 01:27:01 +01:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
runtime="${XDG_RUNTIME_DIR}/i3blocks"
|
|
|
|
|
[[ ! -d "$runtime" ]] && mkdir -p "$runtime"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
|
2022-02-26 22:43:20 +01:00
|
|
|
|
#if [[ "$button" -gt 0 ]]
|
|
|
|
|
#then
|
|
|
|
|
# swaymsg -q -- exec nm-connection-editor
|
|
|
|
|
#fi
|
2021-09-09 01:46:43 +02:00
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Interface à utiliser (sinon, celle ayant la route par défaut)
|
|
|
|
|
if [[ -n "$instance" ]]
|
|
|
|
|
then
|
|
|
|
|
iface="$instance"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
else
|
2020-01-09 21:17:01 +01:00
|
|
|
|
iface="$(ip route | awk '/^default/ { print $5 ; exit }')"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
fi
|
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Si l'interface est inactive on quitte sans rien afficher
|
|
|
|
|
if [[ ! -e "/sys/class/net/${iface}/operstate" \
|
2022-04-15 13:05:19 +02:00
|
|
|
|
|| "$(<"/sys/class/net/${iface}/operstate")" != "up" ]]
|
2017-11-22 01:27:01 +01:00
|
|
|
|
then
|
2020-01-09 21:17:01 +01:00
|
|
|
|
exit 0
|
2017-11-22 01:27:01 +01:00
|
|
|
|
fi
|
|
|
|
|
|
2022-04-15 13:05:19 +02:00
|
|
|
|
rx="$(<"/sys/class/net/${iface}/statistics/rx_bytes")"
|
|
|
|
|
tx="$(<"/sys/class/net/${iface}/statistics/tx_bytes")"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
time="$(date +%s)"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Récupération de la précédente mesure et stockage de l'actuelle
|
|
|
|
|
if [[ -f "${runtime}/bw" ]]
|
|
|
|
|
then
|
2022-04-15 13:05:19 +02:00
|
|
|
|
mapfile -t old < "${runtime}/bw"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
fi
|
2022-04-15 13:05:19 +02:00
|
|
|
|
printf "%s\n" "$time" "$rx" "$tx" > "${runtime}/bw"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Calcul du débit en octets/seconde
|
2022-04-15 13:05:19 +02:00
|
|
|
|
time_diff="$(( time - old[0] ))"
|
2020-01-09 21:17:01 +01:00
|
|
|
|
[[ "$time_diff" -eq 0 ]] && exit
|
2022-04-15 13:05:19 +02:00
|
|
|
|
rx_rate="$(( (rx - old[1]) / time_diff ))"
|
|
|
|
|
tx_rate="$(( (tx - old[2]) / time_diff ))"
|
2017-11-22 01:27:01 +01:00
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Affichage
|
|
|
|
|
if [[ "$rx_rate" -lt 1048576 ]]
|
|
|
|
|
then
|
|
|
|
|
# Moins de 1 Mio/s : affichage en Kio/s précis à 1 kio
|
|
|
|
|
rx_value=$(bc -l <<<$rx_rate/1024)
|
|
|
|
|
rx_unit=K
|
|
|
|
|
tx_prec=0
|
|
|
|
|
elif [[ "$rx_rate" -lt 10485760 ]]
|
|
|
|
|
then
|
|
|
|
|
# Moins de 10 Mio/s : affichage en Mio/s précis à 10 kio
|
|
|
|
|
rx_value=$(bc -l <<<$rx_rate/1024/1024)
|
|
|
|
|
rx_unit=M
|
|
|
|
|
rx_prec=2
|
2017-11-22 01:27:01 +01:00
|
|
|
|
else
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Plus de 10 Mio/s : affichage en Mio/s précis à 100 kio
|
|
|
|
|
rx_value=$(bc -l <<<$rx_rate/1024/1024)
|
|
|
|
|
rx_unit=M
|
|
|
|
|
rx_prec=1
|
2017-11-22 01:27:01 +01:00
|
|
|
|
fi
|
|
|
|
|
|
2020-01-09 21:17:01 +01:00
|
|
|
|
if [[ "$tx_rate" -lt 1048576 ]]
|
|
|
|
|
then
|
|
|
|
|
# Moins de 1 Mio/s : affichage en Kio/s précis à 1 kio
|
|
|
|
|
tx_value=$(bc -l <<<$tx_rate/1024)
|
|
|
|
|
tx_unit=K
|
|
|
|
|
tx_prec=0
|
|
|
|
|
elif [[ "$tx_rate" -lt 10485760 ]]
|
|
|
|
|
then
|
|
|
|
|
# Moins de 10 Mio/s : affichage en Mio/s précis à 10 kio
|
|
|
|
|
tx_value=$(bc -l <<<$tx_rate/1024/1024)
|
|
|
|
|
tx_unit=M
|
|
|
|
|
tx_prec=2
|
2017-11-22 01:27:01 +01:00
|
|
|
|
else
|
2020-01-09 21:17:01 +01:00
|
|
|
|
# Plus de 10 Mio/s : affichage en Mio/s précis à 100 kio
|
|
|
|
|
tx_value=$(bc -l <<<$tx_rate/1024/1024)
|
|
|
|
|
tx_unit=M
|
|
|
|
|
tx_prec=1
|
2017-11-22 01:27:01 +01:00
|
|
|
|
fi
|
2020-01-09 21:17:01 +01:00
|
|
|
|
|
|
|
|
|
# Affichage du tout dans i3blocks
|
|
|
|
|
printf "↓ %4.*f%s ↑ %4.*f%s\n" "${rx_prec}" "${rx_value/./,}" "${rx_unit}" "${tx_prec}" "${tx_value/./,}" "${tx_unit}"
|
|
|
|
|
|