Aplikasi Anda mungkin mengirim paket ke nomor port UDP atau TCP tertentu atau ke alamat IP tertentu.
Karena itu Anda dapat menggunakan sesuatu seperti TCPdump untuk menangkap lalu lintas itu.
TCPdump tidak memberi Anda statistik waktu nyata yang Anda inginkan, tetapi Anda dapat memberi makan keluarannya ke sesuatu yang berfungsi (saya akan mencoba memperbarui jawaban ini dengan jawaban nanti).
Memperbarui:
$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53 2143.33 Bps
11:37:03 1995.99 Bps
11:37:13 2008.35 Bps
11:37:23 1999.97 Bps
11:37:33 2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel
Saya menyela setelah satu menit dengan menekan Ctrl + C.
Anda harus menambahkan ekspresi filter yang sesuai di akhir tcpdump
perintah untuk hanya menyertakan lalu lintas yang dihasilkan oleh aplikasi Anda (mis. port 123
)
Programnya netbps
adalah ini:
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;
my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];
STDOUT->autoflush(1);
while (<>) {
if (/ length (\d+):/) {
$bytes_this_interval += $1;
my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
if ($elapsed_seconds > $reporting_interval) {
my $bps = $bytes_this_interval / $elapsed_seconds;
printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
$start_time = [Time::HiRes::gettimeofday()];
$bytes_this_interval = 0;
}
}
}
Itu hanya contoh, sesuaikan dengan selera.