Ich kann keine Befehle auf dem Remote-Host ausgeführt unter Verwendung erwarten script.It nur auf dem Remote-Host anmeldet und exits.Here ist der Codenicht in der Lage mit Fern ssh Befehle auszuführen erwarten Skript
#!/usr/bin/expect
set timeout 15
puts "connecting to the storage\n"
set user [lindex $argv 0]
set host [lindex $argv 1]
set pass "root123"
spawn ssh "$user\@$host"
expect {
"Password: " {
send "$pass\r"
sleep 1
expect {
"$ " {
send "isi quota quotas list|grep ramesh\r" }
"$ " {
send "exit\r" }
}
}
"(yes/no)? " {
send "yes\r"
expect {
"$ " { send "ls\r" }
"$ " { send "exit\r" }
"> " {}
}
}
default {
send_user "login failed\n"
exit 1
}
}
Es wird nur in den Remote-Host und beendet. [tief @ host1: ~] $ ./sshexpect benutzer1 host2 Anschluss an die Speicher
spawn ssh [email protected]
Password:
host2$
[[email protected]:~]$
Ist die Syntax falsch? Ich bin neu in Tcl Scripting.
ich den Fehler verstanden, aber ich nicht bekommen, was tut die unterhalb der Linie steht für -re {\ $ $} Und auch, warum brauchen wir put erwarten eof am Ende des Skripts – anudeep
Die '-re' Option verwendet regulären Ausdruck Muster anstelle der Standard-Glob-Muster. Ich gebe an, dass die Eingabeaufforderung ein Dollarzeichen und ein Leerzeichen * am Ende der Zeile * ist. Wenn expect ein Dollarzeichen und ein Leerzeichen und dann einen anderen Text sieht, wird das nicht als Aufforderung angezeigt. 'expect eof' bedeutet im Grunde genommen" warte, bis der erzeugte Prozess abgeschlossen ist "- hier nicht unbedingt notwendig, aber in der Regel gute Praxis. –
Ich habe versucht, das funktioniert immer noch nicht für mich.Es zeigt die "Anmeldung fehlgeschlagen" und beendet. Es meldet sich nur in der Remote-Box und dann leer und nach einiger Zeit mit "Login fehlgeschlagen" – anudeep