0
我使用expect期望訪問ssh,並在其中運行特定的命令。我怎麼能得到該命令的實際返回值,並將其設置爲expect或env變量(更好)的返回值?如何在期望的ssh中獲取命令的返回值?
我對期待並不是很熟悉,所以用幾行方式來展示捕捉工作如何工作會有很大幫助。非常感謝。
我使用expect期望訪問ssh,並在其中運行特定的命令。我怎麼能得到該命令的實際返回值,並將其設置爲expect或env變量(更好)的返回值?如何在期望的ssh中獲取命令的返回值?
我對期待並不是很熟悉,所以用幾行方式來展示捕捉工作如何工作會有很大幫助。非常感謝。
你這樣做,你會坐在一個終端以同樣的方式:echo $?
(我假設你的遠程shell是SH/KSH/bash中/ ...)
#!/usr/bin/expect -f
set host remote_host
set user remote_username
set prompt {\$ $}
set cmd {grep not-found /etc/passwd}
log_user 0
spawn ssh -l $user $host
expect -re $prompt
send "$cmd\r"
expect -re $prompt
send -- "echo \$?\r"
expect -re "\r\n(\\d+)\r\n.*$prompt"
set rc $expect_out(1,string)
send -- "exit\r"
expect eof
puts "return code from '$cmd' on $host = $rc"