2014-09-30 180 views
0

我使用expect期望訪問ssh,並在其中運行特定的命令。我怎麼能得到該命令的實際返回值,並將其設置爲expect或env變量(更好)的返回值?如何在期望的ssh中獲取命令的返回值?

我對期待並不是很熟悉,所以用幾行方式來展示捕捉工作如何工作會有很大幫助。非常感謝。

回答

2

你這樣做,你會坐在一個終端以同樣的方式: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" 
相關問題