== Logging == Create a DropBox account and install the commandline tools for DropBox\\ \\ http://xmodulo.com/access-dropbox-command-line-linux.html \\ Create a directory for logs, e.g. /home/logging/logs and a script directory e.g. /home/logging/script\\ \\ Create the "houskeeping.pl" script:\\ #!/usr/bin/perl -w use warnings; my $debug =0; # Unix Commands my $ldate = "/bin/date"; my $lgrep = "/bin/grep"; my $lzgrep = "/bin/zgrep"; my $lhost = "/usr/bin/host"; my $lgzip = "/bin/gzip"; my $lzip = "/usr/bin/zip"; my $ldropb = "/home/logging/script/dropbox_uploader.sh upload"; # Directories and Filenames my $varlog = "/var/log"; my $slogfiles = "syslog*"; my $mlogfiles = "messages*"; my $ChillyNCon = "ChillyNCon*"; my $BackupDir = "/home/logging/logs"; my $ZIPPW = ""; my $dropdir = "logs"; my $UAMLOGIN = "'UAM login'"; my $MACIP = "'Client MAC='"; my $MESSMACIP = "'Granted MAC='"; # Variable declaration my ($YESTERDAYMD,$YESTERDAYM,$YESTERDAYD,$YESTERDAY,$index,$line,$linep1,$linep2,$linep3,$filename); my @MATCH=(); my @Match2=(); my @REVIP=(); my @LINEPARTS=(); my @LINEPARTS2=(); $YESTERDAYMD = `$ldate -d '1 day ago' +'%b\ %e'`; chomp ($YESTERDAYMD); $YESTERDAYMD = "'$YESTERDAYMD'"; $YESTERDAYM = `$ldate -d '1 day ago' +'%b'`; chomp ($YESTERDAYM); $YESTERDAYM = "'$YESTERDAYM'"; $YESTERDAYD = `$ldate -d '1 day ago' +'%d'`; chomp ($YESTERDAYD); $YESTERDAYD = "'$YESTERDAYD'"; $YESTERDAY = `$ldate -d '1 day ago' +'%Y%m%d'`; chomp ($YESTERDAY); if ($debug) {print "Command: $lzgrep $UAMLOGIN $varlog/$slogfiles | $lgrep $YESTERDAYMD \n";} $filename="$BackupDir"."/"."$YESTERDAY".".log"; open(DAILYLOG, '>', $filename) or die "Couldn't open file $filename, $!"; # Get Mac to IP @MATCH = `$lzgrep $MACIP $varlog/$slogfiles | $lgrep $YESTERDAYMD`; printf DAILYLOG "Got: %d logins from syslog at: $YESTERDAY\n", $#MATCH + 1; foreach $line (@MATCH) { chomp($line); print DAILYLOG "$line\n"; } @MATCH=(); print DAILYLOG "\n\n--------------------------\n\n"; @MATCH = `$lzgrep $MESSMACIP $varlog/$mlogfiles | $lgrep $YESTERDAYMD`; printf DAILYLOG "Got: %d logins from messages at: $YESTERDAY\n", $#MATCH + 1; foreach $line (@MATCH) { chomp($line); print DAILYLOG "$line\n"; } print DAILYLOG "#########################\n\n"; @MATCH=(); # Get UAM Logins @MATCH = `$lzgrep $UAMLOGIN $varlog/$slogfiles | $lgrep $YESTERDAYMD`; printf DAILYLOG "Got: %d logins at: $YESTERDAY\n", $#MATCH + 1; foreach $line (@MATCH) { chomp($line); print DAILYLOG "$line\n"; } print DAILYLOG "#########################\n\n"; @MATCH=(); @Match2 = `$lzgrep $YESTERDAYMD $varlog/$ChillyNCon`; foreach $linep2 (@Match2) { if ($debug) {print "$linep2\n";} # drop port 53 (DNS) DPT=53 $index = index($linep2, "DPT="); $index = $index + 4; $linep3 = substr($linep2,$index,2); chomp ($linep3); $linep3 =~ s/^\s+|\s+$//g; if ($linep3 == 53) { if ($debug) {print "DROP LINE DNS !! index: $index Port: $linep3\n"; } next; } $index = index($linep2, "DST="); $linep3 = substr($linep2,$index,22); if ($debug) {print "index: $index IP: $linep3\n"; } @LINEPARTS2= split(" ",$linep3); $linep3 = substr($LINEPARTS2[0],4); if ($debug) {print "Dest IP: $linep3\n";} @IPREV = split (/\./,$linep3); $linep3=""; $linep3 = "$IPREV[3]"."."."$IPREV[2]"."."."$IPREV[1]"."."."$IPREV[0]"; if ($debug) {print "Command: $lhost $linep3\n";} $linep4 = `$lhost $linep3`; chomp($linep2); chomp($linep4); print DAILYLOG "$linep2 $linep4\n"; @LINEPARTS2=(); @IPREV=(); } @Match2=(); close DAILYLOG; $line = `$lgzip $filename`; # Upload Dropbox $filename = "$filename".".gz"; $line = `$ldropb $filename $dropdir`; exit 0; ## end Configure CRON to execute the houskeeping script every night at 10 Minutes past 3 o'clock.\\ crontab -l #* * * * * command to be executed #- - - - - #| | | | | #| | | | +----- day of week (0 - 6) (Sunday=0) #| | | +------- month (1 - 12) #| | +--------- day of month (1 - 31) #| +----------- hour (0 - 23) #+------------- min (0 - 59) 10 3 * * * /home/logging/script/housekeeping.pl > /home/logging/logs/houskeeping.log 2>&1 [[f11:technik:raspberrypi:hotspotdm3kb|Back to HotSpot Overview-Page]]