Linux 如何在expect访问的ssh中获取命令的返回值?

Linux 如何在expect访问的ssh中获取命令的返回值?,linux,expect,Linux,Expect,在我使用expect access ssh之后,在其中运行特定命令。如何获取该命令的实际返回值并将其设置为expect或env变量的返回值(更好) 我对expect不太熟悉,所以用几行文字来说明捕获的工作原理会有很大帮助。非常感谢。您可以像坐在终端一样执行此操作:echo$?(我假设您的远程shell是sh/ksh/bash/…) #/usr/bin/expect-f 设置主机远程\u主机 设置用户远程用户名 设置提示符{\$} set cmd{grep未找到/etc/passwd} 日志用户0

在我使用expect access ssh之后,在其中运行特定命令。如何获取该命令的实际返回值并将其设置为expect或env变量的返回值(更好)


我对expect不太熟悉,所以用几行文字来说明捕获的工作原理会有很大帮助。非常感谢。

您可以像坐在终端一样执行此操作:
echo$?
(我假设您的远程shell是sh/ksh/bash/…)

#/usr/bin/expect-f
设置主机远程\u主机
设置用户远程用户名
设置提示符{\$}
set cmd{grep未找到/etc/passwd}
日志用户0
生成ssh-l$user$host
expect-re$prompt
发送“$cmd\r”
expect-re$prompt
发送--“echo\$?\r”
expect-re“\r\n(\\d+)\r\n.$prompt”
设置rc$expect\u out(1,字符串)
发送--“退出\r\n”
预期eof
在$host=$rc上放置“来自“$cmd”的返回代码”