#!/usr/bin/perl use POSIX; # Unix Timestamp use Net::SCP qw(scp); # Datentransfer via SCP use Time::Local; # Zeitabfrage # Login Informationen my $user = 'USER'; my $host = 'HOST'; # Dateiinformationen my $firefox_path = 'PATH_TO_FILE'; # Pfad zu Protokoll my $filenumber = 0; my $filename = 'places.sqlite'; my $newfile = $filename.$filenumber; my $nextnumber = $filenumber; my $begintime = localtime($timing); # Zeitabfrage my $localtime = time(); my $startTime = time(); my $timeNow = $startTime; my $duration = 0; my $auth = 0; my $tmp; # Zeitabfrage wird in Log eingetragen. open (BT, ">begintime.txt"); print BT "UnixTime: ", scalar $localtime, "\n"; print BT "Lokale Zeit: ", scalar localtime($localtime), "\n\n"; close BT; while (true) { # daemon-Schleife if ( ( ($timeNow - $startTime) % (3 + $duration) ) == 0 ) { while ( not $auth ) { # Verbindungsschleife if ( ( ($timeNow - ($startTime+$duration)) % 5 ) == 0 ) { print "Verbindung wird hergestellt zu ", scalar $host, " als ", scalar $user, "...\n"; $scp = Net::SCP->new($host); $scp->login($user); $auth = $scp->login($user); # Wenn Verbindung erfolgreich, dann weiter. } $tmp = time(); $duration = $tmp - $timeNow; $timeNow = $tmp; } # Protokoll(e) herunterladen print "Protokolle werden heruntergeladen... \n", scalar $firefox_path, "\n"; if (-e $filename) { print "Datei existiert bereits, neuer Name vorschlagen...\n"; rename($filename, $newfile) or warn "Datei konnte nicht umbenannt werden. \n"; if (-e $newfile) { # Wenn $newfile bereits existiert dann $filenumber um 1 addieren. $filenumber++ +1; rename($newfile, $newfile.$filenumber) or warn "Datei konnte nicht umbenannt werden. \n"; } print "Neuer Dateiname: ", scalar $newfile.$filenumber, "\n"; eval { local $SIG{ALRM} = sub { die "timeout 180 - Keine Verbindung zum Server.\n\n"}; alarm(180); # Wenn länger als 3min dann weiter. $scp->get($firefox_path) or die $scp->{errstr}; alarm(0); # alarm zurücksetzen }; print "Ausgabe: ", scalar $scp, "\n"; } else { print "Datei existiert nicht. \n"; eval { local $SIG{ALRM} = sub { die "timeout 180 - Keine Verbindung zum Server.\n\n"}; alarm(180); # Wenn länger als 3min dann weiter. $scp->get($firefox_path) or die $scp->{errstr}; alarm(0); # alarm zurücksetzen }; print "Ausgabe: ", scalar $scp, "\n\n"; } print "Verbindung wird getrennt...\n\n"; $scp->quit; # Verbindung trennen $auth = 0; } $duration = time() - $timeNow; $timeNow = time(); }