Что ж, если у вас установлены Perl и tcpdump, не должно быть слишком сложно взломать что-нибудь ...
Следующий скрипт выведет что-то вроде:
# ./host_traffic google.com
0k
30k ****************
26k **************
24k *************
26k **************
43k **********************
39k ********************
24k *************
15k ********
0k
Я оставлю отправленные / полученные байты в качестве упражнения.
host_traffic:
#!/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;
}