SCP Client

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

SCP Client

Beitrag von Daether » 28.09.2009 09:40:19

Moin Moin,
ich habe z.Zt. ein kleines Problem. Ich muss gewisse Ordner von einem Server zu einem anderen transferieren.
Dabei handelt es sich um mehrere Dateien die ich in einer Liste aufgeordnet habe, die sich nicht mit einer Wildcard zusammenfassen lassen. Keys austauschen, sowie "rsync" oder ähnliche Tools nachinstallieren ist ebenfalls nicht möglich.

Jetzt ist die Frage, wie kann ich am besten die ganzen Dateien transferieren ?
Gibt es die Möglichkeit in einer Art Shellskript + For-Schleife das Passwort für SCP festzulegen und die Kopien machen zu lassen ?
Oder gibt es vielleciht soetwas wie ein SCP-Client, mit dem ich mich einlogge und nur die GET-Befehle reinkopiere ( ähnlich (S)FTP ) ?

MfG Daether

uname
Beiträge: 12481
Registriert: 03.06.2008 09:33:02

Re: SCP Client

Beitrag von uname » 28.09.2009 09:52:28

Generell wäre es ganz toll "sshfs" mit "fuse" zu nutzen. Dann könntest du "rsync" oder "cp" nutzen. Da du jedoch wohl nichts installieren kannst, fällt das wohl weg.

Vielleicht kannst du aber für Perl ein paar Bibliotheken einbinden.

http://packages.debian.org/de/lenny/libnet-scp-perl

Hier ein paar Beispiele für SCP und SFTP:

http://search.cpan.org/~ivan/Net-SCP-0.08/SCP.pm
http://search.cpan.org/~dbrobins/Net-SF ... et/SFTP.pm

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: SCP Client

Beitrag von Daether » 28.09.2009 10:09:46

Hi,
beide Anleitungen helfen mir leider nicht.
SFPT ist nicht installiert und die Anleitung mit dem PERL-Script verlangt verteielte SSH-Keys.

MFG Daether

uname
Beiträge: 12481
Registriert: 03.06.2008 09:33:02

Re: SCP Client

Beitrag von uname » 28.09.2009 10:33:23

Naja. Das Script erlaubt auch Passwörter bei der Funktion "iscp". Nur jedes Mal es einzugeben ist müßig:

Code: Alles auswählen

#! /usr/bin/perl

use Net::SCP qw(scp iscp);
$source="user\@server:/etc/passwd";
$destination = "passwd";
$scp = new Net::SCP;
$scp->iscp($source, $destination);

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: SCP Client

Beitrag von Daether » 28.09.2009 10:59:50

Dann könnte ich mir das Skript auch sparen, und einfach den SCP-Befehl vor jede Datei in einem Editor schreiben. Geht mir ja darum das Passwort nichteingeben zu müssen ;).

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: SCP Client

Beitrag von GoKi » 28.09.2009 11:01:20

Ansonsten vielleicht noch Debianexpect, wobei das natürlich auch erst mal installiert sein muss...
MfG GoKi
:wq

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: SCP Client

Beitrag von Daether » 28.09.2009 11:05:49

Ich schaue es mir gleich mal an,
ich habe mich glaube ich etwas falsch ausgedrückt.
Clientseitig kann ich installieren wie ich lustig bin. Nur auf dem Server auf dem die Dateien liegen kann ich nichts installieren.

MfG Daether

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: SCP Client

Beitrag von rendegast » 28.09.2009 14:50:32

Den ssh-agent laufen lassen, von dem sich scp die Passwörter holen kann?

Der/die Benutzer@Server, für den der login durchgeführt wird, kann ja Keys für sich erstellen.
dessen Private-Key auf den Client kopieren und dann 'scp -i Private-Key ...' ausführen?
Ist nur die Frage, ob der SSH-Server so eingestellt ist, Key-Authentifizierung zuzulassen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: SCP Client

Beitrag von Daether » 29.09.2009 10:43:45

Moin Moin,
habe mich nun an expect versucht, da der Server keine Authentifizierung per Key erlaubt ...

Mein Code zu expect sieht folgendermaßen aus :

Code: Alles auswählen

#!/usr/bin/expect -f
set host "localhost"
set user "root"
set pass "ichbindaspass"
spawn scp -r $user@$host:/root/test/moveme/ /root/test/testify/

expect {
 #  "Sicher weiter verbinden?" {
 #      send "yes\n"
 # }
   "password:" {
       send "$pass\r"
   }
}

close
exit
Der SCP-Befehl funktioniert per Hand. Im Skript taucht für einige Sekunden der "Password:"-Text auf. Nach ein paar Sekunden lande ich dann wieder auf meiner Shell, die Dateien wurden dann aber nicht transferiert.

Hat jemand eine Idee was ich falsch mache ?

MfG Daether

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: SCP Client

Beitrag von nepos » 29.09.2009 11:07:25

Wieso send "$pass\r"? Da sollte doch wohl eher \n stehen oder?
Kenne mich mit expect nicht wirklich aus, aber solltest du da nicht auch nach Password: matchen, also die Gross-/Kleinschreibung beachten?

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: SCP Client

Beitrag von GoKi » 29.09.2009 12:29:13

Versuch mal sowas:

Code: Alles auswählen

#!/usr/bin/expect -f
set host "localhost"
set user "root"
set pass "ichbindaspass"
set timeout 30
spawn scp -r $user@$host:/root/test/moveme/ /root/test/testify/

expect {
  "password:" {
    send "$pass\r"
  } timeout {
    exit
  } 
}

expect {
  } timeout {
    exit
  } -re . {
    exp_continue
  } eof {
    exit
  }
}
MfG GoKi
:wq

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: SCP Client

Beitrag von Daether » 30.09.2009 10:56:00

Moin Moin,
gab 2 Fehler in meinem Skript.

1. "password" muss groß geschrieben werden.
2. Es fehlte noch ein "interact" das die Eingabe praktisch absendet.

Hier das funktionierende Skript :

Code: Alles auswählen

#!/usr/bin/expect --
spawn scp -r root@localhost:/root/test/vonhierl/ /root/test/nachda/

expect {
   "Password:" {
       send "meinpass\r"
       interact
   }
}

exit


Antworten