|
|||||||||||||||||||||||||||
Hej
Et spørgsmål fra en PERL newbie.
Jeg er ved at lave min første Perl subfunction, men jeg kan død og pine
ikke
få
returneret mine arrays :/
Jeg forsøger at læse log-filen fra iptraf, som fortæller lidt om
netværkstrafik.
jeg ville lave en liste over trafikken på http-protokollen (i første
omgang)
nedenunder inkluderer jeg lige mit script , en (lille) log-fil, og
outputtet
fra
det perlscriptet.
Jeg vil gerne læse søjle 1 og 3 fra log-filen ind i variablene @packs og
@bytes.
Det lykkedes også. På outputtet kan man se at inde i subfunktionen får
@packs
og @bytes de rigtige værdier, men når de bliver returneret er der
ingenting i
mine variable..
jeg går ud fra jeg ikke kan finde ud af at returner to arrays, eller at
jeg
kalder subfunktionen forkert :/
Begejstringen for Perl er endnu stor, men nu har jeg gloet på det her
script
lige rigeligt længe.
Håber i kan hjælpe.
- Thomas Mejer Hansen
Jeg inkluderer en barberet udgave af mit script, og en barberet udgave
af min
log-fil Her er outputtet af scriptet :
-----------------------------------------
gauss 211% ./netstat_test.pl
Check for http!
Within Sub Function :
packs 860 2502 773 636 2790 1918 1505 913 295 1105
bytes 450572 1329211 366947 248376 1355232 1028240 703935 473795 147580
571987
Outside Sub Function :
packs
bytes
-----------------------------------------
logfilen http.log :
------------------------------
TCP/http: 860 packets, 450572 bytes total;
TCP/http: 2502 packets, 1329211 bytes total;
TCP/http: 773 packets, 366947 bytes total;
TCP/http: 636 packets, 248376 bytes total;
TCP/http: 2790 packets, 1355232 bytes total;
TCP/http: 1918 packets, 1028240 bytes total;
TCP/http: 1505 packets, 703935 bytes total;
TCP/http: 913 packets, 473795 bytes total;
TCP/http: 295 packets, 147580 bytes total;
TCP/http: 1105 packets, 571987 bytes total;
---------------------------------
scriptet 'netstat_test.pl' :
---------------------------------
#!/usr/bin/perl
#
$logfiles="./";
$tcp="http.log";
(@httppacks,@httpbytes)=get_protocol("http");
print "Outside Sub Function : \n";
print "packs @httppacks \n";
print "bytes @httpbytes \n";
sub get_protocol {
my (@packs);
my (@bytes);
open(PRO, "cat $logfiles/$tcp | grep @_[0]|");
print "Check for @_[0]!\n\n";
$line=0;
while (<PRO>) {
++$line;
@p=split(/\s+/,$_,5);
$packs[$line]=$p[1];
$bytes[$line]=$p[3];
}
close PRO;
print "Within Sub Function :\n";
print "packs @packs \n";
print "bytes @bytes \n\n";
return $packs;
return $bytes;
}
----------------------------------------
|
||||||||||||||
|
||||||||||||||