Portál AbcLinuxu, 7. května 2025 22:21
Zdravim mel by dotaz na mereni rychlosti internetoveho rozhrani vyahnutim informaci z /proc/dev/net . Vytvoril jsem si malej skript v shellu , ale namerena rychlost se neshoduje treba v programu iptraf . Prikladam skript.
speed1=`awk 'BEGIN {FS="[ :]+"} /eth0/ {print $3}' /proc/net/dev`
sleep 1
speed2=`awk 'BEGIN {FS="[ :]+"} /eth0/ {print $3}' /proc/net/dev`
speed3=(($speed2 - $speed1))
echo $speed3
Namerene hodnoty se ukladaji do promenych speed1 a speed2 v intervalu 1 sekunda a jejim naslednym odecteni , vysledek vsak neodpovida skutecnosti . Ma nekdo lepsi reseni ?
oprava
speed3=$(($speed2 - $speed1))
Nastroje jsou zajimave , ale neresi muj problem potrebuju promenou speed3 dale zpracovat , nebo ji vytahnout z nejakeho programu .
Číst to pomocí SNMP ?
print $3
Měříte v bajtech nebo paketech?
vnstat -l -i eth0
Vypisuje to počet přijatých/odeslaných paketů a velikost dat.
Dekuji za pomoc , zda se ze jsem to nejak poresil a hodnoty se v celku shoduji , kdyz nastavim delsi dobu mereni , je mereni presnejsi . Ve skriptu se meri po 10 sekundach .Mereni se provadi v bytech.
#!/bin/sh
espeak='/usr/bin/espeak'
awk='/bin/awk'
doba=10
while :; do
speed1=`$awk 'BEGIN {FS="[ :]+"} /eth0/ {print $3}' /proc/net/dev`
speed2=`$awk 'BEGIN {FS="[ :]+"} /eth0/ {print $11}' /proc/net/dev`
sleep $doba
speed11=`$awk 'BEGIN {FS="[ :]+"} /eth0/ {print $3}' /proc/net/dev`
speed22=`$awk 'BEGIN {FS="[ :]+"} /eth0/ {print $11}' /proc/net/dev`
sub1=$(($speed11 - $speed1))
sub2=$(($speed22 - $speed2))
speed111=$(($sub1 / $doba))
speed222=$(($sub2 / $doba))
$espeak -p 40 -s 70 -v cs "rychlost odchozích dat za vteřinu je $speed222 bajtů"
$espeak -p 40 -s 70 -v cs "rychlost příchozích dat za vteřinu je $speed111 bajtů"
echo 'prichozi' $speed111 'odchozi'$speed222
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.