Thread Skript für automatische Backups (27 answers)
Opened by mollilinux at 2010-02-23 14:06

mollilinux
 2010-02-24 09:56
#133577 #133577
User since
2010-02-16
19 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Skript für automatische Backups