【发布时间】:2017-06-27 12:13:29
【问题描述】:
我有一个期望脚本,到目前为止它工作正常......它在现有的 ssh 隧道上生成一个 ssh 会话,如下所示:
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o {ProxyCommand=nc -X 5 -x localhost:8888 %h %p} "$user_ip"
$user_ip具有用户名和目标 IP,正如 ssh 所期望的那样,例如 username@IP
问题在于,有时,另一个 ssh 隧道正在使用端口 8888,每次发生这种情况时,我都必须调整代码并更改隧道端口。
所以,我试图在一个变量中发送端口,以避免一直接触代码。 我从命令行获取隧道端口,如:
set proxy_port [lindex $argv 2]
然后
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o {ProxyCommand=nc -X 5 -x localhost:"$proxy_port" %h %p} "$conn"
我看到 proxy_portvariable 设置正确,但是当脚本尝试生成 ssh 时,我得到:
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o {ProxyCommand=nc -X 5 -x localhost:8888 %h %p} USERID@10.0.0.1
command-line line 0: garbage at end of line; "-o".
send: spawn id exp5 not open
while executing
"send "$pwd\r""
(file "./amm-qev.new.exp" line 36)
在上面的错误中,我看到端口已正确替换,但它抱怨 ssh 语法。
我那双弱的眼睛没有看清楚是怎么回事?
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
-
@jww 我同意 “Stack Overflow 是一个编程和开发问题的网站”,但是完全不同意 “它与编程或开发无关” 。问题是关于使用 expect 脚本语言编程时出现的问题......就像许多发布在 Stack Overflow 上的问题一样