Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Perl --> Daten kopieren über hosts per ssh

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.02.2002
    Beiträge
    26

    Perl --> Daten kopieren über hosts per ssh

    Hi Folks,

    kann mir jemand mal auf die Sprünge helfen und ein Beispiel für das kopieren mittels Perl mit ssh (ohne Passwortabfrage) von einem Rechner auf einen anderen Posten.

    DANKE !!!!

    Grüße, Spike

  2. #2
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    das sind ja zwei probleme auf einmal:

    1. ssh
    2. copy mit perl

    zu 1. belies dich einfach mal zu ssh. wenn du schaffst dich am remote-host mittels "ssh host" anzumelden ohne nach dem password gefragt zu werden ist die erste hürde genommen. (zuerst keys generieren und dann austauschen...)

    zu 2. wenn ssh geht kannst du scp dafür benutzen. einfach mittels auf der shell ausführen... alternativ dazu findet sich wahrscheinlich auch ein entsprendes Modul bei cpan. Die sind in aller Regel gut dokumentiert und mit beispielen.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.02.2002
    Beiträge
    26
    1.

    ja ok habe mich vielleicht nicht richtig ausgedrückt, also ssh ist installiert, keys generiert, das bereitstellen der Keys muss ich noch machen, falls es keine andere möglichkeit mit perl gibt.

    2. Das ich das ganze über system aufrufe machen kann ist klar. Allerdings würde ich schon gerne die Möglichkeiten von Perl nutzen.

    Im cpan archiv und diversen foren habe ich schon gesucht. Die ssh module für perl sind im cpan auch gelistet und beschrieben. Allerdings habe ich mit ssh unter perl noch nichts gemacht und habe gedacht jemdand könnt mich vor groben Schnitzern bewahren.

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    also ich mach das genau so wie oben angedeutet. Ich habe die pub-keys ausgetauscht und somit eine Verbindung ohne explizites login. Ich halte das für besser, als passwörter in einem script zu hinterlegen, das vielleicht auf irgendeiner Entwicklungsmaschine versehentlich rumliegt...


    In meinem Perl-Script passiert dann folgendes:

    PHP-Code:
            if($fileok==0) { #falls Datei nicht vorhanden
                
    if($route eq "r2l" ) {
                    
    writelog("Datei kopiert: $user\@$host:$rdir$sfile -> $ldir$sfile");
                    
    $scpcmd="/usr/bin/scp -pC $user\@$host:$rdir$sfile $ldir$sfile";
                    
    $chkcmd="ls $ldir$sfile";
                    }
                if (
    $route eq "l2r" ) {
                    
    writelog("Datei kopiert: $ldir$sfile -> $user\@$host:$rdir$sfile");
                    
    $scpcmd="/usr/bin/scp -pC $ldir$sfile $user\@$host:$rdir$sfile";
                    
    $chkcmd="ssh $user\@$host\ ls $rdir$sfile";
                    }
                `
    $scpcmd`;
                if (
    transfercheck($chkcmd) && $movedir ne "") {
                    `
    mv $ldir$sfile $movedir`;
                    } 
    ich baue einfach ein scp-comando zusammen und führe das aus. ob das sonderlich geschickt ist weiss ich nicht. ich bin aber nicht darauf angewiesen, dass überall wo ich das einsetzt entsprechende module installiert sind.

    da das für mich ok ist habe ich mich mit dem modul Net::SSH nicht beschäftigt...
    Geändert von elrond (05-06-2003 um 06:11 Uhr)
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.02.2002
    Beiträge
    26
    danke für Dein Beispiel...


    Zu diesem Thema findet man wirklich wenig im Netz (vielleicht bin ich auch zu blöd zum Suchen).

    Ich werde das jetzt erstmal so umsetzen wie Du es gepostet hast, und komme damit schon weiter.

    Eine Frage stellt sich mir dann doch wenn Du das ganze über exec abhandelst kannst Du ja auch gleich ein Shell skript schreiben :-) ...

    Also Ihr Perl -Progger traut Euch mal zu einem Beispiel mit Perl ssh modulen.

    Danke+Grüße, Spike

  6. #6
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi spike,

    hab Net::SSH::Perl bzw. sein Windows-Gegenstück nur zur geskripteten Befehlsausführung über ne SSH-Verbindung missbraucht. Mit denen selbst wirste auch nicht ohne weiteres einen File-Transfer hinbekommen.

    Aber dazu gibts das darauf aufbauende Net::SFTP vom gleichen Autor. Und wenn Dir die Doku unter [1] oder das Beispielprogramm psftp im eg/ Unterverzeichnis des Pakets nicht weiterhilft, ja dann ...

    gruss,

    phate

    [1] http://search.cpan.org/author/BTROTT...ib/Net/SFTP.pm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •