Thread Skript für automatische Backups
(27 answers)
Opened by mollilinux at 2010-02-23 14:06
Momentan bin ich das Skript am fertigstellen. Es scheint alles zu funktionieren. Bei der Schleife Line 43 - 59 scheint es aber noch ein Problem zu geben. Wenn das File FILE bereits existiert müsste die Schleife FILE0 daraus machen. Das funktioniert auch. Das Problem ist wenn FILE0 existiert dass dann FILE 1 erstellen, wenn FILE1 existiert, dann wiederum eine Zahl höher (Das währe das Ziel der Schleife).
Das funktioniert irgendwie nicht. Line 12 - 15 scheint etwas nicht zu klappen, oder liegt das Problem bei der Schleife? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 #!/usr/bin/perl use POSIX; # Unix Timestamp use Net::SCP qw(scp); # Datentransfer via SCP # Login Informationen my $user = 'USER'; my $host = 'HOST'; # Dateiinformationen my $file_path = 'PATH_TO_FILE'; # Pfad zu Protokoll my $filenumber = 0; my $filename = 'FILE'; my $newfile = $filename.$filenumber; my $nextnumber = $filenumber++; # Zeitabfrage my $localtime = time(); my $startTime = time(); my $timeNow = $startTime; my $duration = 0; my $auth = 0; my $tmp; while (true) { # daemon-Schleife if ( ( ($timeNow - $startTime) % (120 + $duration) ) == 0 ) { while ( not $auth ) { # Verbindungsschleife if ( ( ($timeNow - ($startTime+$duration)) % 5 ) == 0 ) { print "Verbindung wird hergestellt... \n", scalar $scp, "\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) { rename($filename, $newfile) or warn "Datei konnte nicht umbenannt werden. \n"; while (-e $newfile) { # Existiert FILE0, dann FILE1. $nextnumber; $newfile.$filenumber; } print "Datei existiert bereits, neuer Name vorschlagen...\n"; $scp->get($file_path) or die $scp->{errstr}; print "Ausgabe: ", scalar $scp, "\n"; } else { print "Datei existiert noch nicht. \n"; $scp->get($file_path) or die $scp->{errstr}; print "Ausgabe: ", scalar $scp, "\n" } print "Verbindung wird getrennt...\n"; $scp->quit; # Verbindung trennen $auth = 0; } Bei Line 33 scheint es auch noch ein Problem zu geben. Das Ziel ist wenn die Verbindung erfolgreich steht, dann müsste $auth = 1 umschalten. Irgendwie passiert das nicht, es schaltet direkt zu $auth = 1 um, obwohl die Verbindung noch nicht steht. Müsste da noch eine Schleife oder so hinein? Kann mir jemand helfen? Gruss mollilinux Last edited: 2010-02-24 09:58:50 +0100 (CET) |