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

mollilinux
 2010-02-23 14:06
#133516 #133516
User since
2010-02-16
19 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-Community

Ich bin seit gestern an einem Skript das es ermöglicht, automatische Backups von Protokollen von meinem Server herunterzuladen. Das Skript soll zuerst sich über SSH verbinden, wenn die Verbindung fehlgeschlagen ist, dann alle 5 sek. versuchen neu verbinden.
Wenn die Verbindung erfolgreich ist, dann soll das Skript die Logfiles kopieren und die Verbindung trennen, dann 2min warten und wieder von vorne beginnen. Die Subroutine ist für die Verbindung zuständig (doConnect). Wenn ich das Skript ausführe, dann bekomme ich diese Fehlerausgabe:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
...
sh: -c: Zeile 0: `doConnect() BENUTZER@HOST /usr/bin/ssh 1266935440 1266935440 0'
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `walti@openmolli.dynalias.com'
sh: -c: Zeile 0: `doConnect() BENUTZER@HOST /usr/bin/ssh 1266935440 1266935440 0'
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `walti@openmolli.dynalias.com'
sh: -c: Zeile 0: `doConnect() BENUTZER@HOST /usr/bin/ssh 1266935440 1266935440 0'
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `walti@openmolli.dynalias.com'
sh: -c: Zeile 0: `doConnect() BENUTZER@HOST /usr/bin/ssh 1266935440 1266935440 0'
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `walti@openmolli.dynalias.com'
sh: -c: Zeile 0: `doConnect() BENUTZER@HOST /usr/bin/ssh 1266935440 1266935440 0'

...
und weitere selbe Zeilen.


Hier der Code:

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
#!/usr/bin/perl

use POSIX;

my $host = 'HOST';
my $user = 'USER';

my $startTime = getUnixTime();
my $timeNow = $startTime;
my $duration = 0;
my $auth = 0;
my $tmp;

# Subroutine für getUnixTime
sub getUnixTime {
    my $sec  =  40;
    my $min  =  30;
    my $hour =  14;
    my $day  =  23;
    my $mon  = 2   - 1;
    my $year = 2010 - 1900;
    my $wday = 0;
    my $yday = 0;

    my $unixtime = mktime ($sec, $min, $hour, $day, $mon, $year, $wday, $yday);
}

# Subroutine für System-Call

sub exec_command {
    system("doConnect() $cmd_login $ssh_bin $startTime $duration $auth");
}

while (true) { # daemon-Schleife
  if ( ( ($timeNow - $startTime) % (120 + $duration) ) == 0 ) {
  
    while ( not $auth ) { # Verbindungsschleife
      if ( ( ($timeNow - ($startTime+$duration)) % 5 ) == 0 ) {

        sub doConnect {
              $cmd_login = "$user\@$host";
              $ssh_bin = `which ssh`; chomp $ssh_bin;
              exec_command();
        }
        doConnect();

        # doAuth();
      }
      $tmp = getUnixTime;
      $duration = $tmp - $timeNow;
      $timeNow = tmp;
    }

    getLogs();
    disconnect();
    $auth = 0;
  }

  $duration = getUnixTime() - $timeNow;
  $timeNow = getUnixTime();
}


Irgendwie komme ich nicht mehr weiter.

Kann mir jemand helfen?

Gruss mollilinux
Last edited: 2010-02-23 17:23:21 +0100 (CET)

View full thread Skript für automatische Backups