Narzędzia takie jak MRTG zapewniają wykresy przepustowości / przepustowości sieci dla bieżącego wykorzystania sieci na określonych interfejsach, takich jak eth0. Jak mogę zwrócić te informacje w wierszu poleceń w systemie Linux / UNIX?
Najlepiej byłoby, gdyby nie instalowanie czegokolwiek innego niż to, co jest dostępne w systemie w standardzie.
linux
networking
bandwidth
davidmytton
źródło
źródło
bmon
co jest pomocne. github.com/tgraf/bmon#screenshotsOdpowiedzi:
Możesz przeanalizować dane wyjściowe
ifconfig
źródło
while true; do export `ifconfig p1p1 | grep packets | awk '{print $5, $3}' | xargs echo | sed -E -e "s/([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/rx=\1 rxp=\2 tx=\3 txp=\4/"` ; echo $rx $rxp $tx $txp `cat /tmp/netstat` | awk '{print $1-$5, $2-$6, $3-$7, $4-$8}';echo $rx $rxp $tx $txp > /tmp/netstat; sleep 5 ;done
-bash: export:
jednolinijka powoduje przekroczenia: 0 ': nie jest prawidłowym identyfikatorem' dla mnie na RHEL6. Parsowanie/sys/class/net/$dev/statistics
(zobacz skrypt Perla w odpowiedzi @ephemient) bezpośrednio działa znacznie lepiej.iftop does for network usage what top(1) does for CPU usage
- http://www.ex-parrot.com/~pdw/iftop/Nie wiem, jak „standardowy” jest iftop, ale udało mi się go zainstalować
yum install iftop
w Fedorze.źródło
iftop
może być zainstalowany na czystej łatwo zainstalować Ubuntu również:apt-get install iftop
.pacman -S iftop
tcpdump
ponownego analizowania wyników. Dziękujęiftop
iwireshark
za pozwolenie mi na lenistwo.iftop
jest bardziej szczegółowe i zawiera statystyki dla poszczególnych połączeń.iftop
wymaga instalacji (nie będziesz w stanie go nawet zbudować bezlibpcap
zainstalowanej instalacji), a jego strona główna mówi, że musi być uruchamiany podroot
.Masz sar? Prawdopodobnie tak, jeśli używasz RHEL / CentOS.
Nie ma potrzeby korzystania z priv, głupich plików binarnych, hakerskich skryptów, libpcap itp. Win.
źródło
Napisałem ten głupi skrypt dawno temu, zależy on tylko od Perla i Linuksa ≥ 2,6:
Po prostu czyta
/sys/class/net/$dev/statistics
co sekundę i wypisuje aktualne liczby oraz średnią szybkość zmian:źródło
/proc/net/dev
lub jakoś obliczać dane na sekundę podstawowe?nload to świetne narzędzie do monitorowania przepustowości w czasie rzeczywistym i łatwe do zainstalowania w Ubuntu lub Debian za pomocą sudo apt-get install nload.
Innym doskonałym narzędziem jest iftop , również łatwo dostępny:
Nie zapomnij o klasycznych i potężnych narzędziach sar i netstat na starszych * nix!
źródło
Możesz przeanalizować / proc / net / dev .
źródło
/sys/class/net/$dev/statistics
jak w skrypcie Ephemient.dstat
- Łączy dane vmstat, iostat, ifstat, netstat i inneiftop
- Niesamowite narzędzie do analizy przepustowości sieci do analizy tego, co naprawdę dzieje się w Twoim eterzenetio
- Mierzy przepustowość netto sieci za pośrednictwem protokołu TCP / IPinq
- Narzędzie do rozwiązywania problemów z interfejsem CLI, które wyświetla informacje o pamięci masowej, zwykle Symmetrix. Domyślnie INQ zwraca nazwę urządzenia, identyfikator Symmetrix, jednostkę LUN Symmetrix i pojemność.send_arp
- Wysyła rozgłoszenie ARP na określone urządzenie sieciowe (domyślnie eth0), zgłaszając stare i nowe mapowanie adresu IP na adres MAC.EtherApe
- jest graficznym monitorem sieciowym dla Uniksa wzorowanym na Ethermanie. Wyposażony w warstwę łącza, tryby IP i TCP, wyświetla graficznie aktywność sieci.iptraf
- Monitor ruchu IP, który pokazuje informacje o ruchu IP przechodzącym przez twoją sieć.Więcej szczegółów: http://felipeferreira.net/?p=1194
źródło
Mam do tego kolejny szybki i brudny skrypt bash:
Rozważa to
sleep 1
faktycznie potrwa to dokładnie jedną sekundę, co nie jest prawdą, ale wystarczająco dobre do zgrubnej oceny przepustowości.Dzięki @ephemient za
/sys/class/net/<interface>
! :)źródło
let BWRX=($RX-$RXPREV)/1024
(chociaż nie mam teraz nic do przetestowania)Oprócz iftop i iptraf sprawdź także:
bwm-ng
(Monitor przepustowości nowej generacji)i / lub
cbm
(Miernik przepustowości kolorów)ref: http://www.powercram.com/2010/01/bandwidth-monitoring-tools-for-ubuntu.html
źródło
Jeśli chcesz tylko uzyskać wartość, możesz użyć prostego onelinera powłoki w następujący sposób:
Pokaże ci średnią "odebranych bajtów na sekundę" przez okres 10 sekund (możesz zmienić okres, zmieniając
S=10
parametr, i możesz zmierzyć przesłane BPS zamiast odebranych używająctx_bytes
zamiastrx_bytes
). Nie zapomnij się zmienićeth0
urządzenia sieciowego, które chcesz monitorować.Oczywiście nie jesteś ograniczony do wyświetlania średniej stawki (jak wspomniano w innych odpowiedziach, istnieją inne narzędzia, które pokażą Ci znacznie ładniejsze wyniki), ale to rozwiązanie jest łatwe do skryptu, aby robić inne rzeczy.
Na przykład następujący skrypt powłoki (podzielony na wiele wierszy w celu zwiększenia czytelności) wykona proces offlineimap tylko wtedy, gdy średnia 5-minutowa prędkość transmisji spadnie poniżej 10 kB / s (przypuszczalnie, gdy zakończy się inny proces pochłaniający przepustowość):
Zauważ, że
/sys/class/...
jest to specyficzne dla Linuksa (co jest w porządku, ponieważ przesyłający wybrałlinux
tag) i wymaga niearchaicznego jądra. Sam kod powłoki jest kompatybilny z / bin / sh (więc nie tylko bash, ale także dash i inne implementacje / bin / sh będą działać), a / bin / sh to coś, co jest naprawdę zawsze instalowane.źródło
Podoba mi się,
iptraf
ale prawdopodobnie musisz go zainstalować i wydaje się, że nie jest już aktywnie obsługiwany.źródło
Uważam, że dstat jest całkiem dobry. Musi być jednak zainstalowany. Zapewnia o wiele więcej informacji niż potrzebujesz. Netstat poda stawki za pakiety, ale nie poda również przepustowości. netstat -s
źródło
Możesz użyć iperf do testowania wydajności sieci ( maksymalnej możliwej przepustowości ). Zobacz poniższe łącza, aby uzyskać szczegółowe informacje:
http://en.wikipedia.org/wiki/Iperf
https://iperf.fr/
https://code.google.com/p/iperf/
źródło
Nie mogłem zmusić skryptu parsowania ifconfig do pracy dla mnie na AMI, więc uruchomiłem to mierząc otrzymany ruch uśredniony w ciągu 10 sekund
Przepraszam, to zawsze takie tanie i paskudne, ale zadziałało!
źródło
Jeśli chcesz uzyskać wynik (ifconfig -a) w formacie json, możesz użyć tego (python)
źródło