Dapatkan kecepatan jaringan saat ini di bash

2

Apakah ada metode untuk mendapatkan kecepatan jaringan saat ini (seperti yang bisa saya dapatkan dengan «nload») dalam skrip bash? Saya hanya akan memasukkan ke dalam variabel kecepatan pada saat skrip berjalan. Contoh: «./script.sh» akan menampilkan «In: 50Ko / s | Keluar: 25Ko / s ».

Terima kasih :)

tux1124
sumber
netstat -i dapat digunakan juga, tetapi hal yang sama diperlukan seperti yang disebutkan CJSewell, Anda harus mengambil sampel dengan perbedaan waktu dan menghitung.
MaQleod

Jawaban:

4

cat /proc/net/dev menunjukkan berapa banyak byte yang telah ditransfer pada setiap antarmuka.

Anda dapat mengambil beberapa sampel dan menghitung kilobyte saat ini per detik?

Berikut adalah skrip yang saya temukan dan modifikasi sedikit traffic.sh . Salin ke suatu tempat di PATH Anda dan ubah izin menjadi 755chmod 755 traffic.sh

Penggunaan adalah

traffic.sh eth0

Mencetak

 Transmitted: 5352K
 Received: 13M
 Total: 19M
 Sleeping 3 to calculate speed...
 Current speed: 690B/s
CJSewell
sumber
Membuat versi baru yang menampilkan apa yang Anda minta netspeed.sh
CJSewell
0

Di bawah ini adalah skrip yang berfungsi pada sebagian besar perute Linux tertanam seperti yang kompatibel dengan Ubiquiti dan OpenWRT dan mendapatkan perinciannya dari / proc / net / dev.

(Dan mudah diubah ke paket dll.)

#!/bin/sh

SLP=1 # output / sleep interval
DEVICE=$1
IS_GOOD=0
for GOOD_DEVICE in `grep \: /proc/net/dev | awk -F: '{print $1}'`; do
    if [ "$DEVICE" = $GOOD_DEVICE ]; then
        IS_GOOD=1
        break
    fi
done

if [ $IS_GOOD -eq 0 ]; then
    echo "Device not found. Should be one of these:"
        grep ":" /proc/net/dev | awk -F: '{print $1}' | sed s@\ @@g 
    exit 1
fi

while true; do

LINE=`grep $1 /proc/net/dev | sed s/.*://`;
RECEIVED1=`echo $LINE | awk '{print $1}'`
TRANSMITTED1=`echo $LINE | awk '{print $9}'`
TOTAL=$(($RECEIVED1+$TRANSMITTED1))

sleep $SLP

LINE=`grep $1 /proc/net/dev | sed s/.*://`;
RECEIVED2=`echo $LINE | awk '{print $1}'`
TRANSMITTED2=`echo $LINE | awk '{print $9}'`
SPEED=$((($RECEIVED2+$TRANSMITTED2-$TOTAL)/$SLP))
INSPEED=$((($RECEIVED2-$RECEIVED1)/$SLP))
OUTSPEED=$((($TRANSMITTED2-$TRANSMITTED1)/$SLP))

printf "In: %12i KB/s | Out: %12i KB/s | Total: %12i KB/s\n" $(($INSPEED/1024)) $(($OUTSPEED/1024)) $((($INSPEED+$OUTSPEED)/1024)) ;

done;

Salin hal di atas ke clipboard Anda dan kemudian dalam sesi terminal di router Anda:

$ cat > /tmp/n.sh

lalu: Ctrl + V (atau klik kanan / Tempel)

lalu: Ctrl + D

$ chmod +x /tmp/n.sh

$ /tmp/n.sh eth0

Anda juga dapat menempelkannya di notepad, lalu ulangi saja di atas jika Anda perlu mengeditnya - tidak semua perute tertanam memiliki editor! Pastikan Anda menyalin semuanya dari # di atas hingga selesai; di dasar.

Anda mungkin harus mengubah / bin / bash ke / bin / sh atau sebaliknya. Ada contoh lain yang menggunakan / sys di sini: Bagaimana mendapatkan statistik jaringan real-time di Linux dengan format KB / MB / Bytes dan untuk port tertentu atau proses aplikasiID?

Sumber: https://gist.github.com/dagelf/ab2bad26ce96fa8d79b0834cd8cab549

Dagelf
sumber
Tolong jangan memposting jawaban yang sama untuk beberapa pertanyaan. Jika informasi yang sama benar-benar menjawab kedua pertanyaan, maka satu pertanyaan (biasanya yang baru) harus ditutup sebagai duplikat dari yang lain. Anda dapat menunjukkan ini dengan memilih untuk menutupnya sebagai duplikat atau, jika Anda tidak memiliki reputasi yang cukup untuk itu, angkat bendera untuk menunjukkan bahwa itu adalah duplikat. Kalau tidak, sesuaikan jawaban Anda untuk pertanyaan ini dan jangan hanya menempelkan jawaban yang sama di banyak tempat.
DavidPostill
Bagaimana komentar Anda relevan dengan pertanyaan yang ada? Apakah SO tidak memiliki fungsi pesan pribadi? Apakah SO memiliki duplikat yang mirip tetapi tidak? Jika Anda meluangkan waktu untuk membaca, Anda akan melihat bahwa itu disesuaikan. Saya mempostingnya di sini karena ini muncul di pencarian Google lain dan mengapa memposting hanya tautan ketika saya dapat memberikan jawabannya di sini? Sebaliknya memperbaiki SO.
Dagelf
Fungsi pesan pribadi dicadangkan untuk situasi yang memerlukan pesan moderator - biasanya ini hanya digunakan untuk perilaku yang memerlukan penangguhan - yang tidak.
DavidPostill