0byt3m1n1
Path:
/
data
/
7
/
tmp
/
[
Home
]
File: watch_file.pl
#!/usr/bin/perl -w use strict; use English; use IO::File; use POSIX qw( strftime ); use Sys::Hostname; my $MAX_ELAPSED_TIME = 900; #my $MAIL_RECIPIENTS = 'frankd@networksolutions.com'; my $MAIL_RECIPIENTS = 'frankd@networksolutions.com,mgallagher@networksolutions.com,matthewh@networksolutions.com,asaxena@networksolutions.com,jpolkows@networksolutions.com,DEvans@networksolutions.com,ESullivan@web.com,hyunjino@web.com,Christopher.Garrity@networksolutions.com,CEldrige@web.com,Jeff.Sharpe@networksolutions.com,yhlin@networksolutions.com,Nathan.Finck@networksolutions.com,Tolulope.Fagbuyi@networksolutions.com,jli@networksolutions.com,NOCSupervisor@networksolutions.com'; sub slurpFile { my ($path) = @_; my $data = undef; my $size = -s $path; open(FILE, $path) or return undef; read(FILE, $data, $size); close(FILE); return $data; } sub slurpFiles { my %fileContents; foreach my $fileName (@ARGV) { $fileContents{$fileName} = slurpFile($fileName); } return(\%fileContents); } # # Main process loop # # Become a daemon fork && exit; setpgrp(0,$$); my $hostname = hostname; my $startTime = time; my $last_contents = slurpFiles(); while(time - $startTime <= $MAX_ELAPSED_TIME) { sleep(1); my $contents = slurpFiles(); foreach my $fileName (keys %{$contents}) { if ($contents->{$fileName} ne $last_contents->{$fileName}){ my $timestamp = strftime('%Y-%m-%d %H:%M:%S', localtime); printf("[ %s ] - File $fileName contents changed: \n", $timestamp); printf("%s\n", '-' x 76); printf($contents->{$fileName}); printf("%s\n\n\n", '-' x 76); open(MAIL, "|/usr/sbin/sendmail -t"); print MAIL "To: $MAIL_RECIPIENTS\n"; print MAIL "Subject: [ $timestamp ] - File $fileName contents changed on $hostname\n"; print MAIL "\nNew content:", $contents->{$fileName},"\n"; close (MAIL); } } # # Update the contents # $last_contents = $contents; }