erwarten Sie in den remote system, bekommen Ausgabe auf lokale shell-variable
Ich versuche zu bekommen eine expect-Skript ssh in einem remote-system, und die Ausgabe eines remote-Befehl.
Ich will haben, dass die Ausgabe, die lokal verfügbar sind.
Als ein Beispiel, ssh in das system und Holen Sie sich die lokale Zeit-Ausgabe:
#!/usr/bin/expect --
set timeout 60
spawn ssh [email protected]
expect {
timeout {puts "timed out after $timeout seconds"; exit}
"Password:"
}
send "SuperSecretPassword\r"
expect "user$ "
send "date\r"
expect "date"
expect "\r"
set buffer1 '$expect_out(buffer)'
expect "\r"
set buffer2 '$expect_out(buffer)'
send "exit\r"
expect eof
set buffer3 '$expect_out(buffer)'
exit
export VARIABLE $buffer1
export VARIABLE $buffer2
export VARIABLE $buffer3
echo "Okay, we are done expecting..."
echo "Buffer1: $buffer1"
echo "Buffer2: $buffer2"
echo "Buffer3: $buffer3"
Natürlich, die oben nicht funktioniert, und in der Tat die Skript-Ausführung beendet, nachdem das erwarten "exit"
InformationsquelleAutor JeremyLaurenson | 2013-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor JeremyLaurenson
Dem Weg zum übergeben von Daten von einem untergeordneten Prozess (expect-Skript) zu den Eltern (shell-Skript?) ist über stdio Kanäle: expect-Skript zu drucken, die expect_out Puffer, und das shell-Skript zu erfassen, die erwarten, dass die Ausgabe und handeln in gewisser Weise.
bevor die
exit
etwas wieWerden Sie wollen wahrscheinlich schalten Sie alle anderen erwarten, dass Ausgabe. Das ist
log_user 0
und ... etwas anderes kann ich mich nicht erinnern ... der Erkundung Erwarten, dass Buch hat all die wunderbaren details.Das shell-Skript tun würde
oder vielleicht einfach
Natürlich erwarten, ist ein vollwertiger und sehr fähige Sprache, in einem eigenen Recht (Tcl), und kann zweifellos machen alle lokalen Sachen, die Sie tun müssen, ohne zu stören, mit einem shell-Skript aufrufen erwarten und die Weitergabe der Daten zurück.
InformationsquelleAutor glenn jackman