#!/usr/bin/perl
if (@ARGV == 1)
{
open (CTF, "$ARGV[0]") or die "Cannot open crontab for $ARGV[0]:$!";
@lines = <CTF>;
print "<html><head><title>Listing Cronjobs</title><body><pre>";
foreach $line (@lines)
{
if (index($line, '#') != 0)
{
chomp $line;
(@fields) = split /\s+/,$line ;
if ($fields[3] eq '*')
{
$months='1';
for ($lcnt=2;$lcnt<13;$lcnt++)
{
$months .= ",$lcnt";
}
} else {
$months=$fields[3];
}
if ($fields[2] eq '*')
{
$days='1';
for ($lcnt=2;$lcnt<31;$lcnt++)
{
$days .= ",$lcnt";
}
} else {
$days=$fields[2];
}
if ($fields[1] eq '*')
{
$hours='0';
for ($lcnt=1;$lcnt<24;$lcnt++)
{
$hours .= ",$lcnt";
}
} else {
$hours=$fields[1];
}
if ($fields[0] eq '*')
{
$mins='0';
for ($lcnt=1;$lcnt<60;$lcnt++)
{
$mins .= ",$lcnt";
}
} else {
$mins=$fields[0];
}
$cmd = $fields[5];
$cmd .= ' ' . $fields[6] if defined $fields[6];
$cmd .= ' ' . $fields[7] if defined $fields[7];
$cmd .= ' ' . $fields[8] if defined $fields[8];
$cmd .= ' ' . $fields[9] if defined $fields[9];
$cmd .= ' ' . $fields[10] if defined $fields[10];
$cmd .= ' ' . $fields[11] if defined $fields[11];
(@mons) = split /,/,$months;
foreach $mon (@mons)
{
(@doms) = split /,/,$days;
foreach $dom (@doms)
{
(@hrs) = split /,/,$hours;
foreach $hr (@hrs)
{
(@mns) = split /,/,$mins;
foreach $mn (@mns)
{
$hkey = sprintf "%02d%02d%02d%02d",$mon, $dom, $hr, $mn;
if (exists $event{$hkey})
{
$event_val{$hkey} .= sprintf "%s-%02d-%02d %02d:%02d:00 %s\n", ((localtime)[5]+1900), $mon, $dom, $hr, $mn, $cmd;
} else {
$event_val{$hkey} = sprintf "%s-%02d-%02d %02d:%02d:00 %s\n", ((localtime)[5]+1900), $mon, $dom, $hr, $mn, $cmd;
}
}
}
}
}
}
}
@keys = sort { $a cmp $b } keys %event_val;
foreach $key (@keys) {
printf "%s", $event_val{$key};
}
print "</pre></body></html>";
} else {
print "You must specify a crontab file\n$0 crontabfile\n"; }
exit;