#!/usr/bin/perl
# Debug-Ausgabe zum Testen/Fehlersuchen ein/ausschalten
$debug = 0;
# Anmeldecredentials für das Panel, Benachrichtigungsadressen
$uid='123456';
$pwd='strenggeheim';
$from='meine-adresse@meine-domain.de';
$to ='meine-benachrichtigungsadresse@gmx.net';
# Verzeichnis, in dem die abgerufenen Vergleichsdaten aufbewahrt werden sollen
chdir ("/root/infoscripts/daten");
########################################
use WWW::Mechanize;
use MIME::Lite;
check("news.php","news");
check("basicdata.php?type=customerdata","customerdata");
check("basicdata.php?type=billingdata","billingdata");
check("basicdata.php?type=serverdata","serverdata");
check("backup.php","backup");
check("ticket.php?action=opentickets","opentickets");
check("basicdata.php?type=invoicedata","invoicedata");
check("hostsystem.php","hostsystem.php");
sub check
{ ($url, $file) = @_;
system("cp -pf vserver.$file.current vserver.$file.old") if (-e "vserver.$file.current");
my $m = WWW::Mechanize->new( autocheck => 1, agent => "Mozilla/4.0 (compatible; MSIE 6.0; Windows)" );
$m->credentials("$uid", "$pwd");
$m->add_header( Referer => "https://powerpanel.vserver.de/index.php" );
$m->get("https://powerpanel.vserver.de/index.php", @args);
$m->get("https://powerpanel.vserver.de/$url", @args);
$content = $m->content;
# variable Uptime herausfiltern, z.b. 9 Tag(e) 20:15:54 Stunden
$content =~ s/\d+ Tag/x Tag/;
$content =~ s/\d+:\d+:\d+ Stunden/xx:xx:xx Stunden/;
# sonstigen bei jedem Abruf ändernden content herausfiltern
$content =~ s/(Backupserver:[^\n]+\n[^\n]+\n)([^\n]+)(\n)/$1---$3/m;
$content =~ s/(name="checkPost" value=")(\w+)"/$1---"/m;
#print $m->content if $debug;
open (F, ">vserver.$file.current");
print F $content;
close (F);
if (system("diff vserver.$file.current vserver.$file.old >/dev/null"))
{ print "vServer $file hat sich geaendert!\n" if $debug;
$Mail = MIME::Lite->build
( From => $from,
To => $to,
# Cc => $cc,
# Reply-To => $replyto,
# Return-path => $returnpath,
Subject => "vServer Powerpanel Datenaenderung: $file",
Type => 'text/html',
Data => $m->content
) or die "MIME::Lite->new: $!\n";
print "sende Mail ...\n" if $debug;
$Mail->send();
}
else { print "vServer $file ist gleichgeblieben!\n" if $debug; }
}