Ich habe einige n Dateien in einem Verzeichnis auf meinem Unix-System. Gibt es eine Möglichkeit, ein Shellscript zu schreiben, das alle diese Dateien über scp auf ein bestimmtes Remote-System überträgt? Ich werde das Passwort im Skript angeben, damit ich es nicht für jede Datei eingeben muss.
83
Antworten:
Verwenden Sie SSH-Schlüssel, anstatt das Kennwort in einem Shell-Skript fest zu codieren. Dies ist einfacher und sicherer.
Angenommen, Ihr privater Schlüssel ist bei
~/.ssh/id_rsa
So generieren Sie ein öffentliches / privates Schlüsselpaar:
Das obige generiert 2 Dateien,
~/.ssh/id_rsa
(privater Schlüssel) und~/.ssh/id_rsa.pub
(öffentlicher Schlüssel)So richten Sie den SSH - Schlüssel für die Nutzung (einmalige Aufgabe): Kopieren Sie den Inhalt
~/.ssh/id_rsa.pub
und in einer neuen Linie von Paste~devops/.ssh/authorized_keys
inmyserver.org
Server. Wenn~devops/.ssh/authorized_keys
es nicht existiert, können Sie es erstellen.Eine übersichtliche Anleitung finden Sie hier .
quelle
http://blogs.oracle.com/SanthoshK/entry/automate_linux_scp_command
quelle
expect
in MSYS2 gepackte Paket stimmt mit der gesamten Ausgabe überein, sodass die erste Regel immer übereinstimmt. Wenn Sie die Reihenfolge beider Regeln austauschen, erhalten Sie das gewünschte Verhalten.warum versuchst du das nicht
quelle
Sie können auch rsync verwenden. Es scheint für mehrere Dateien besser zu funktionieren als scp IMHO.
Aktualisieren
Sie können rsync über ssh verwenden, indem Sie den Schalter '-e' hinzufügen:
quelle
quelle
Was ist mit Platzhaltern oder mehreren Dateien?
quelle
rsync ist ein Programm, das sich ähnlich wie rcp verhält, jedoch viel mehr Optionen bietet und das Remote-Aktualisierungsprotokoll rsync verwendet, um die Dateiübertragung beim Aktualisieren der Zieldatei erheblich zu beschleunigen.
Mit dem rsync-Remote-Update-Protokoll kann rsync nur die Unterschiede zwischen zwei Dateigruppen über die Netzwerkverbindung übertragen. Dabei wird ein effizienter Prüfsummen-Suchalgorithmus verwendet, der im technischen Bericht zu diesem Paket beschrieben ist.
Ordner von einem Speicherort an einen anderen kopieren
quelle
Wenn Sie Ihr Kennwort bei jeder Ausführung des Skripts einmal eingeben können, können Sie dies problemlos über eine SSH-Master-Verbindung tun.
quelle
Sie können dies nur mit öffentlichen / privaten SSH-Schlüsseln tun. Oder verwenden Sie Kitt, in dem Sie das Passwort festlegen können. scp unterstützt die Eingabe eines Passworts in der Befehlszeile nicht.
Anweisungen für öffentliche / private Schlüssel finden Sie hier: http://www.softpanorama.org/Net/Application_layer/SSH/scp.shtml
quelle
Das wird funktionieren:
quelle
Hier ist Bash-Code für SCP mit einer .pem-Schlüsseldatei. Speichern Sie es einfach in einer script.sh-Datei und führen Sie es mit 'sh script.sh' aus.
Genießen
quelle
Versuchen Sie es mit lftp
quelle
Der Befehl
scp
kann wie ein traditionelles UNIX verwendet werdencp
. Also, wenn Sie dies tun:wird funktionieren
quelle