Erwarten Sie nicht, dass Sie -c-Argumente verwenden

1049
G Gordon Worley III

Ich habe also ein erwartetes Skript, das funktioniert:

#!/usr/bin/expect spawn scp me@myserver.com:* . expect { password:  } 

Ausgehend von der Manpage for erwarten, sollte ich dies anstelle der Befehlszeile tun können, um dasselbe zu erreichen

expect -c "spawn scp me@myserver.com:* ." -c "expect }" 

Dies kehrt jedoch zum Terminal zurück

spawn scp me@myserver.com:* . me@myserver.com's password:  

und dann nach wenigen Sekunden ohne Fehlermeldung aufgibt und nie etwas tut.

Hinweis

Ja, ich bin mir bewusst, dass ich dies nicht mit scp tun sollte und stattdessen Schlüssel verwenden sollte.

0

1 Antwort auf die Frage

0
glenn jackman

Ich bin nicht sicher, aber ich vermute, dass die mehrfachen -cArgumente das Problem sind. Sie können ein here-doc verwenden, um das Skript an stdin zu übergeben:

expect <<'END' spawn scp me@myserver.com:* . expect { password:  } END 

Die einfachen Anführungszeichen um das erste 'END'werden das gesamte Dokument zitieren.

Ich habe im Wesentlichen das getan, aber Echo verwendet, um stattdessen zu erwarten G Gordon Worley III vor 10 Jahren 0