Mam takyto log
# IPFMv0.11.5 2006/06/28 18:05:00 (local time) -- dump every 0d01:00:00 -- listening on eth1
# Host In (bytes) Out (bytes) Total (bytes)
192.168.1.5 17323854 36390745 53714599
192.168.1.27 9108902 3697053 12805955
192.168.1.53 4010227 3827226 7837453
192.168.1.36 3678746 4055882 7734628
192.168.1.43 3149723 3936789 7086512
192.168.1.62 3650113 459502 4109615
# end of dump 2006/06/28 18:05:00
Potrebujem napisat skript, tak ze po zadani skriptu a zvolenej ip adresy z logu vypise pod seba do konzoly len data in a out pre zadanu ip. Pomoze niekto?
#!/usr/bin/perl $logdir = "/var/log/ipfm/"; $logfile = "ipfmlog.log"; $hostname = "/bin/hostname --fqdn"; $uptime = "/usr/bin/uptime | /usr/bin/cut -b 14-28"; @HOSTS=( # insert strings contained ip_number::name "192.168.0.1::hostname1", "192.168.0.2::hostname2", ); open (LOG,"$logdir$logfile"); while () { chop; $line = $_; if ($line !~ /^#.*/) { foreach $ip_comment (@HOSTS) { ($ip,$comment) = split("::",$ip_comment); if ($comment eq $ARGV[0]) { $par=$comment; } if ($line =~ /^$par\s*(\d*)\s*(\d*)\s*(\d*)/) { $HOSTSIn{$comment} += $1; $HOSTSOut{$comment} += $2; $HOSTSTot{$comment} += $3; #### for debugging #print "$HOSTSIn{$comment} = $1; $HOSTSOut{$comment} = $2;$HOSTSTot{$comment} = $3;"; } } } } close (LOG); if ($par eq "") { foreach $com (keys(%HOSTSIn)) { $TotalIn += $HOSTSIn{$com}; $TotalOut += $HOSTSOut{$com}; } } else { $TotalIn = $HOSTSIn{$par}; $TotalOut = $HOSTSOut{$par}; } print "$TotalOut\n"; print "$TotalIn\n"; print `$uptime\n`; print `$hostname\n`;Tento skript vypise uptime a hostname. Nevypise out a in. Co treba opravit?@HOSTS=( # insert strings contained ip_number::name "192.168.1.20::hostname20", "192.168.1.27::hostname27", "192.168.1.53::hostname53", );Zaujimave ze ked spustim s parametrom hostname tak miesto pre in a out je prazdne. Ked spustim s parametrom ip tak tam vypise nespravne data rovnake ako pri spusteni bez parametra.