2014-09-11 9 views
5

So habe ich mehrere Beiträge zu diesem Thema gesehen und vielleicht habe ich gerade nicht die richtige gesehen.Automatisieren SCP mit mehreren Dateien mit Expect-Skript

Ich benutze ein Expect-Skript, um mehrere Dateien von meinem Gebietsschema auf eine Fernbedienung scp. Ich möchte keine Keys für passwortlose Logins einrichten, denn dann können die Server nicht weggeblasen werden und stehen ohne weitere Arbeit auf, ja ich könnte die Schlüsselerstellung automatisieren, ich würde es lieber nicht tun. Also möchte ich das * benutzen können, aber jedesmal wenn ich das * benutze, sagt es mir. Der Grund, warum ich * anstelle eines vollständigen Namens verwenden möchte, ist, dass die Versionsnummer sich ständig ändert und ich nicht jedes Mal das Skript manuell ändern möchte.

/path/{Install.sh,programWithVerionAfter*\}: No such file or directory 

Killed by signal 1. 

Ich hoffe, dass dies eine einfache Lösung oder Workaround ist. Alles, was ich tun möchte, ist scp diese Dateien, so kann ich einen Installationsprozess mit einem Klick auf eine Schaltfläche automatisieren. Vielen Dank im Voraus für jede Hilfe

#!/usr/bin/expect -f 

spawn scp /path/\{Install.sh,programWithVerionAfter*\} "[email protected]:/tmp/. 
expect { 
    -re ".*es.*o.*" { 
    exp_send "yes\r" 
    exp_continue 
    } 
    -re ".*sword.*" { 
    exp_send "Password\r" 
    } 
} 
interact 

Antwort

12

Ich fand, was ich mit viel mehr googeln wollte. Vielen Dank für Ihre Hilfe, hoffen, dass diese anderen hilft

http://www.linuxquestions.org/questions/linux-general-1/scp-with-wildcard-in-expect-834813/

#!/usr/bin/expect -f 

spawn bash -c "scp /path/* [email protected]:/tmp/" 
expect { 
    -re ".*es.*o.*" { 
    exp_send "yes\r" 
    exp_continue 
    } 
    -re ".*sword.*" { 
    exp_send "Password\r" 
    } 
} 
interact 
+0

Ich denke, dass Sie den Befehl Tcl finden 'glob' in diesem Fall nützlich zu sein. –

1

Sie curl verwenden können Dateien von Ihrem lokalen Host zu Ihrer Remote-Host über SFTP zu kopieren (was dasselbe ist wie das Kopieren scp für alle Absichten und Zwecke), und geben Sie die Benutzername und Passwort im Befehl, so:

curl -T /files/to/copy/* -u username:password ftps://ftpshost.domain.tld/