Chcę wyświetlić bieżące wykorzystanie sieci (wykorzystanie przepustowości) jednego interfejsu skrzynki Debian na stronie internetowej. Nie powinna być bardzo skomplikowana ani precyzyjna, wystarczy zwykła liczba, taka jak „52 Mbit / s”.
Typowe monitory przepustowości sieci, takie jak nie iftoppozwalają mi po prostu wyodrębnić takiej wartości.
Jak mogę go najlepiej odzyskać?
Na przykład myślę, że mogę analizować /proc/net/devco kilka minut. Nie jestem jednak pewien, czy to naprawdę najlepszy sposób na zrobienie tego.
Najlepszym sposobem na to jest po prostu parsowanie /proc/net/dev(należy pamiętać, że /procnie jest przenośne). Oto bashskrypt, który szybko przygotowałem, który powinien być w stanie go obliczyć:
Pamiętaj, że sleepnie bierze pod uwagę czasu potrzebnego na wykonanie operacji w pętli while, więc jest to (bardzo nieznacznie) niedokładne. Na mojej coppermine o częstotliwości 600 MHz pętla zajmuje 0,011 sekundy - w większości przypadków jest to nieistotna niedokładność. Pamiętaj także, że używając (skomentowane) wyjścia kilobajt / megabit, bash rozumie tylko arytmetykę liczb całkowitych.
Myślę, że to powinna być wybrana odpowiedź. Każde inne rozwiązanie przekazuje, za kulisami, parsowanie /proc/net/dev, bez faktycznego zrozumienia, co i jak ta magia się dzieje.
Eran
To rozwiązanie działało dla mnie na routerze / busyboksie.
kloneman
Użyj, date +%s.%Naby uzyskać uniksowy znacznik czasu dla każdej iteracji i podzielić różnicę bajtów przez różnicę znacznika czasu. W ten sposób unikniesz problemu, że iteracje pętli są dłuższe niż 1s.
Arnavion,
3
Istnieją monitory ruchu sieciowego, takie jak vnstat,
który prowadzi miesięczne zapisy twojego ruchu, lub slurm, który pobiera jego wartości bezpośrednio z tych przechowywanych w jądrze. Jest dostępny w większości repozytoriów dystrybucji.
Czy możesz to trochę wyjaśnić? Dokładnie jaki powinien być parametr? Jakie jest znaczenie 125? Proszę nie odpowiadać w komentarzach; edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
/proc/net/dev
, bez faktycznego zrozumienia, co i jak ta magia się dzieje.date +%s.%N
aby uzyskać uniksowy znacznik czasu dla każdej iteracji i podzielić różnicę bajtów przez różnicę znacznika czasu. W ten sposób unikniesz problemu, że iteracje pętli są dłuższe niż 1s.Istnieją monitory ruchu sieciowego, takie jak vnstat, który prowadzi miesięczne zapisy twojego ruchu, lub slurm, który pobiera jego wartości bezpośrednio z tych przechowywanych w jądrze. Jest dostępny w większości repozytoriów dystrybucji.
Oto, co widzę po uruchomieniu
slurm -i ra0
:źródło
Oto bardzo prosty skrypt powłoki, aby to obliczyć:
po prostu uruchom skrypt przekazując nazwę interfejsu, np.
./shtraf eth1
źródło
125
? Proszę nie odpowiadać w komentarzach; edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.