Here I am posting the script.
#!/usr/local/bin/perl
#This script is for checking the modification time of files under /con
+fig directory.
use File::Find;
use File::stat qw(:FIELDS);
use HTTP::Request;
use LWP::UserAgent;
%fileModTimes;
$serverPath = "";
$filesModified = "";
%broadcastingModTimes;
$broadcastingModified = "";
open(IN, "/config/Status.conf") or file_not_found();
while (<IN>)
{
if (/ServerPath/)
{
s/ServerPath.*=(.*)/$1/;
$serverPath = $1;
}
}
close IN;
find(\&updateFileModTimes, "/config");
find(\&updateBroadCastingModTimes,"/config/Notify.conf");
#Check all files under /config directory
sub updateFileModTimes
{
if ( -f "$File::Find::name" && "$File::Find::name" =~ /.*\.txt/i)
{
if ($fileModTimes{$File::Find::name})
{
stat($File::Find::name) or die "Couldn't find $File::Find::nam
+e";
if ( $fileModTimes{$File::Find::name} eq $st_mtime )
{
#do nothing
}
else
{
$fileModTimes{$File::Find::name} = $st_mtime;
$filesModified = "true";
}
}
else
{
stat($File::Find::name) or die "Couldn't find $File::Find::nam
+e";
$fileModTimes{$File::Find::name} = $st_mtime;
}
}
}
#Check Notify.conf file for broadcating message under /config
sub updateBroadCastingModTimes
{
if ( -f "$File::Find::name" && "$File::Find::name" eq "/config/Notif
+y.conf")
{
if ($broadcastingModTimes{$File::Find::name})
{
stat($File::Find::name) or die "Couldn't find $File::Find::nam
+e";
if ( $broadcastingModTimes{$File::Find::name} eq $st_mtime )
{
#do nothing
}
else
{
$broadcastingModTimes{$File::Find::name} = $st_mtime;
$broadcastingModified = "true";
}
}
else
{
stat($File::Find::name) or die "Couldn't find $File::Find::nam
+e";
$broadcastingModTimes{$File::Find::name} = $st_mtime;
}
}
}
while ( true )
{
sleep 3;
$url = $serverPath."\/appl?method=Updatefile";
$ua = LWP::UserAgent->new;
$request = HTTP::Request->new(GET => $url);
$response = $ua->request($request);
#Check all files under configfiles directory
find(\&updateFileModTimes, "/config");
if ($filesModified eq "true" )
{
#A sleep of 10 secs is allowed here to ensure that all the files
#are modified correctly.
sleep 10;
find(\&updateFileModTimes, "/config");
#send a request to the servlet
$url = $serverPath."\/appl?method=Updatefile";
$ua = LWP::UserAgent->new;
$request = HTTP::Request->new(GET => $url);
$response = $ua->request($request);
$filesModified = "";
}
#check Notify.conf file for broadcasting message under configfiles d
+irectory
find(\&updateBroadCastingModTimes, "/config/Notify.conf");
if ($broadcastingModified eq "true" )
{
#A sleep of 10 secs is allowed here to ensure that Notify.conf fil
+e
#is modified correctly.
sleep 10;
find(\&updateBroadCastingModTimes, "/config/Notify.conf");
#send a request to the servlet
$url = $serverPath."\/appl?method=Updatefile&NotificationMessage=b
+roadcast";
$ua = LWP::UserAgent->new;
$request = HTTP::Request->new(GET => $url);
$response = $ua->request($request);
$broadcastingModified = "";
}
}
Edited by davido: Added readmore tags per consideration consensus.