আপনার অ্যাপ্লিকেশন সম্ভবত নির্দিষ্ট ইউডিপি বা টিসিপি পোর্ট নম্বরে বা একটি নির্দিষ্ট আইপি-ঠিকানায় প্যাকেট প্রেরণ করছে।
অতএব আপনি ট্র্যাফিক ক্যাপচারের জন্য টিসিপিডাম্প জাতীয় কিছু ব্যবহার করতে পারেন।
টিসিপিডম্প আপনাকে পছন্দসই রিয়েল-টাইম পরিসংখ্যান দেয় না তবে আপনি এটির আউটপুট এমন কিছুতে খাওয়াতে পারেন (আমি উত্তরটি পরে উত্তর দিয়ে আপডেট করার চেষ্টা করব)।
হালনাগাদ:
$ 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
আমি বাধা দিয়েছিলাম যে এক মিনিটের পরে Ctrl + C টিপুন।
tcpdump
আপনার অ্যাপ্লিকেশন দ্বারা উত্পাদিত ট্র্যাফিককে অন্তর্ভুক্ত করতে আপনাকে কমান্ডের শেষে একটি উপযুক্ত ফিল্টার এক্সপ্রেশন যুক্ত করতে হবে (উদাঃ port 123
)
প্রোগ্রামটি netbps
হ'ল:
#!/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;
}
}
}
এটি কেবল একটি উদাহরণ, স্বাদে সামঞ্জস্য করুন।