这是tload
平均负载图。
那里有iftop
网络使用情况的条形图。
如何做这样的事情:
# tcpdump -i eth0 --plot 'host 1.2.3.4'
13:45:03 | | 0 in 0 out
13:45:04 |O | 0 in 1MB out
13:45:05 |OOOI | 500 KB in 4MB out
13:45:06 |OIIII | 6MB in 1MB out
13:45:07 | | 0 in 0 out
13:45:08 |IIIIIIIIIIII | 53M in 0 out
答案1
好吧,如果你安装了 perl 和 tcpdump,那么破解某些东西应该不难……
下面的脚本将输出类似以下内容:
# ./host_traffic google.com
0k
30k ****************
26k **************
24k *************
26k **************
43k **********************
39k ********************
24k *************
15k ********
0k
我将把发送/接收的字节显示作为练习。
主机流量:
#!/usr/bin/perl
$interface = "eth0";
$interval = 1;
$target_host = $ARGV[0];
$bytes = 0;
sub print_stats
{
$nstars = $bytes / 2000; # diagram scale = 2k
$stars = "";
for ($i = 0; $i < $nstars; $i++)
{ $stars .= "*"; }
printf("%4ik $stars\n", $bytes / 1000);
$bytes = 0;
alarm $interval;
}
$SIG{ALRM} = sub { print_stats(); };
alarm $interval;
$pcap_filter = "ip src or dst $target_host";
open(IN, "tcpdump -s 500 -l -n -i $interface '$pcap_filter' | ");
while (my $s = <IN>)
{ # parse tcpdump output
if ($s =~ m|(.*) IP (.*)\.([^.]*) > (.*)\.([^.]*): Flags \[(.*)\],.*, length (.*)|)
{
my ($timestamp, $src, $sport, $dst, $dport, $flags, $len) = ($1, $2, $3, $4, $5, $6, $7);
$bytes += $len;
next;
}
print $s;
}