Alat seperti MRTG menyediakan grafik throughput / bandwidth jaringan untuk penggunaan jaringan saat ini pada antarmuka tertentu, seperti eth0. Bagaimana saya dapat mengembalikan informasi tersebut pada baris perintah di Linux / UNIX?
Lebih disukai jika ini dilakukan tanpa menginstal apa pun selain yang tersedia pada sistem sebagai standar.
linux
networking
bandwidth
davidmytton
sumber
sumber
bmon
yang berguna. github.com/tgraf/bmon#screenshotsJawaban:
Anda dapat mengurai keluaran
ifconfig
sumber
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:
overruns: 0 ': not a valid identifier` untuk saya di RHEL6. Parsing/sys/class/net/$dev/statistics
(lihat skrip perl di jawaban @ephemient) secara langsung bekerja lebih baik.iftop does for network usage what top(1) does for CPU usage
- http://www.ex-parrot.com/~pdw/iftop/Saya tidak tahu bagaimana iftop "standar", tetapi saya dapat menginstalnya
yum install iftop
di Fedora.sumber
iftop
dapat diinstal pada Ubuntu instalasi yang bersih mudah juga:apt-get install iftop
.pacman -S iftop
tcpdump
keluaran lagi. Terima kasihiftop
danwireshark
, karena mengizinkan saya menjadi malas ini.iftop
lebih rinci, dan memberikan statistik per koneksi.iftop
memerlukan instalasi (Anda bahkan tidak akan dapat membangunnya tanpalibpcap
menginstal) dan halaman beranda mengatakan itu harus dijalankan di bawahroot
.Punya sar? Mungkin ya jika Anda menggunakan RHEL / CentOS.
Tidak perlu priv, binari norak, skrip hacky, libpcap, dll. Menang.
sumber
Saya menulis skrip bodoh ini sejak lama, itu hanya bergantung pada Perl dan Linux≥2.6:
Itu hanya membaca dari
/sys/class/net/$dev/statistics
setiap detik, dan mencetak angka saat ini dan tingkat rata-rata perubahan:sumber
/proc/net/dev
atau menghitung data pada dasar per / detik entah bagaimana lagi?nload adalah alat yang hebat untuk memantau bandwidth secara real time dan mudah dipasang di Ubuntu atau Debian dengan sudo apt-get install nload.
Alat hebat lainnya adalah iftop , juga mudah apt-get'able:
Jangan lupa tentang utilitas sar dan netstat yang klasik dan kuat di * nix yang lebih lama!
sumber
Anda dapat mengurai / proc / net / dev .
sumber
/sys/class/net/$dev/statistics
seperti pada skrip ephemient.dstat
- Menggabungkan informasi vmstat, iostat, ifstat, netstat, dan lainnyaiftop
- Utilitas bandwidth jaringan yang luar biasa untuk menganalisis apa yang sebenarnya terjadi di eth Andanetio
- Mengukur throughput jaringan melalui TCP / IPinq
- Utilitas pemecahan masalah CLI yang menampilkan info tentang penyimpanan, biasanya Symmetrix. Secara default, INQ mengembalikan nama perangkat, Symmetrix ID, Symmetrix LUN, dan kapasitas.send_arp
- Mengirimkan siaran arp pada perangkat jaringan yang ditentukan (default ke eth0), melaporkan pemetaan alamat IP lama dan baru ke alamat MAC.EtherApe
- adalah monitor jaringan grafis untuk Unix yang dimodelkan setelah etherman. Menampilkan lapisan tautan, mode IP dan TCP, ini menampilkan aktivitas jaringan secara grafis.iptraf
- Monitor lalu lintas IP yang menunjukkan informasi tentang lalu lintas IP yang melewati jaringan Anda.Detail selengkapnya: http://felipeferreira.net/?p=1194
sumber
Saya mendapat skrip quick'n'dirty bash lainnya untuk itu:
Ini mengingat bahwa
sleep 1
sebenarnya akan bertahan tepat satu detik, yang tidak benar, tetapi cukup baik untuk penilaian bandwidth kasar.Terima kasih kepada @ephemient untuk
/sys/class/net/<interface>
! :)sumber
let BWRX=($RX-$RXPREV)/1024
(meskipun saya tidak punya apa-apa untuk mengujinya sekarang)Selain iftop dan iptraf, periksa juga:
bwm-ng
(Bandwidth Monitor Generasi Berikutnya)dan / atau
cbm
(Pengukur Bandwidth Warna)ref: http://www.powercram.com/2010/01/bandwidth-monitoring-tools-for-ubuntu.html
sumber
Jika Anda hanya ingin mendapatkan nilainya, Anda dapat menggunakan shell oneliner sederhana seperti ini:
Ini akan menunjukkan kepada Anda rata-rata "byte yang diterima per detik" untuk periode 10 detik (Anda dapat mengubah periode dengan mengubah
S=10
parameter, dan Anda dapat mengukur BPS yang dikirim alih-alih BPS yang diterima dengan menggunakantx_bytes
alih-alihrx_bytes
). Jangan lupa untuk mengubaheth0
ke perangkat jaringan yang ingin Anda pantau.Tentu saja, Anda tidak dibatasi untuk menampilkan nilai rata-rata (seperti yang disebutkan dalam jawaban lain, ada alat lain yang akan menunjukkan hasil yang jauh lebih baik), tetapi solusi ini mudah ditulis untuk melakukan hal lain.
Misalnya, skrip shell berikut (dibagi menjadi beberapa baris agar terbaca) akan menjalankan proses offlineimap hanya jika kecepatan transmisi rata-rata 5 menit turun di bawah 10kBPS (mungkin, saat beberapa proses lain yang menghabiskan bandwidth selesai):
Perhatikan bahwa
/sys/class/...
ini khusus untuk Linux (yang tidak masalah karena pengirim memang memilihlinux
tag), dan membutuhkan kernel non-archaic. Kode shell itu sendiri kompatibel dengan / bin / sh (jadi tidak hanya bash, tetapi tanda hubung dan implementasi / bin / sh lainnya akan berfungsi) dan / bin / sh adalah sesuatu yang benar-benar selalu diinstal.sumber
Saya suka
iptraf
tetapi Anda mungkin harus menginstalnya dan sepertinya tidak lagi dipertahankan secara aktif.sumber
Menurut saya dstat cukup bagus. Harus diinstal. Memberi Anda lebih banyak informasi daripada yang Anda butuhkan. Netstat akan memberi Anda tarif paket tetapi tidak juga bandwith. netstat -s
sumber
Anda dapat menggunakan iperf untuk mengukur kinerja jaringan (hasil semaksimal mungkin ). Lihat tautan berikut untuk detailnya:
http://en.wikipedia.org/wiki/Iperf
https://iperf.fr/
https://code.google.com/p/iperf/
sumber
Saya tidak bisa membuat skrip parse ifconfig berfungsi untuk saya di AMI, jadi saya membuatnya berfungsi dengan mengukur lalu lintas yang diterima rata-rata lebih dari 10 detik
Maaf, ini sangat murah dan menjijikkan tetapi berhasil!
sumber
Jika Anda ingin output (ifconfig -a) dalam format json Anda dapat menggunakan ini (python)
sumber