wildcard erwarten, dass script funktioniert nicht
Habe ich das folgende Skript erfolgreich ausgeführt. Allerdings, wenn ich versuche, einen Platzhalter benutzen, kopieren von mehreren Dateien, wird ein Fehler ausgegeben, der besagt "Keine solche Datei oder das Verzeichnis".
Dieser code funktioniert:
#!/usr/bin/expect -f
spawn scp file1.txt [email protected]:/temp1/.
expect "password:"
send "iamroot\r"
expect "*\r"
expect "\r"
Folgendes funktioniert nicht:
#!/usr/bin/expect -f
spawn scp * [email protected]:/temp/. #fails here
….
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
*
ist in der Regel erweitert durch die shell (bash), aber in diesem Fall haben Sie die shell istexpect
. Ich vermute, dassexpect
ist nicht die Erweiterung der*
.versuchen:
Erklärung:
{}
um sicherzustellen, dass nichts ist gefangen von Tcl (Sie haben Optionen oder anderen.)AFAIK scp standardmäßig auf Datei kopieren, während bash könnte erweitern * um Verzeichnisse auch, wenn herausgefunden wird im aktuellen Pfad.
Vielleicht versuchen, eine
-r
(rekursive) könnte dein problem lösen (nicht sicher, da ich nicht überprüfen kann das Szenario jetzt)?Oder wenn Sie nicht möchten, kopieren Sie die gesamte Ordnerstruktur, die Sie nutzen könnten
scp *.txt ...
je nach Ihren Bedürfnissen.-r
würde rekursiv kopieren Sie den gesamten Ordner-Struktur, wenn es das ist, was er braucht. Ich habe vielleicht verpasst mein Punkt mit der*.txt
aber ich würde nicht nach unten Abstimmung. Prost!