Ich versuche, ssh in einen Server, einen Befehl ausführen und speichern Sie die Ausgabe in eine Variable, ohne Erfolg.Erwarten: SSH in einen Remote-Host, führen Sie einen Befehl, und speichern Sie die Ausgabe in eine Variable
spawn $env(SHELL)
expect "\$ "
send "ls\r"
expect "\$ "
send "ssh myserver1\r"
expect "\$ "
send "cd /tmp/remotedir1\r"
expect "\$ "
send "ls\r"
expect "\$ "
set myvar1 [exec ls]
puts "The value of \$myvar1 is: "
puts $myvar1
send "exit\r"
expect "\$ "
send "exit\r"
expect eof
Wenn ich es laufen, erhalte ich:
spawn /bin/bash
$ ls
localfile1 localfile2 localfile3
$ ssh myserver1
Last login: Tue Sep 10 15:45:07 2017 from 192.168.0.100
myserver1$ cd /tmp/remotedir1
myserver1$ ls
remotefile1
myserver1$ The value of $myvar1 is:
localfile1
localfile2
localfile3
exit
logout
Connection to myserver1 closed.
bash-3.2$ exit
exit
Offenbar statt MyVar1 $ auf "remotefile1", es auf diese drei Dateien in dem $ cwd auf dem lokalen Host setzt.
Vielen Dank für Ihre Hilfe im Voraus!
Danke. Obwohl Ihr Beispielcode mir nicht genau das gibt, was ich wollte, kam ich auf die Idee, das Schlüsselwort $ expect_out zu verwenden, um die Ausgabe des vorherigen Send-Befehls zu übernehmen. – Young