spawn:如何将参数传递给 expect 脚本中的 spawn?
spawn: How to pass arguments to spawn within an expect script?
我只是有一个更大的 bash-script 在那里我遇到了一个问题,使用 ssh 连接到另一台电脑。那个是第一次访问(总是,真的 ;)),因此询问 无法确定主机 '[192.168.120.170]:9022 ([192.168.120.170]:9022)' 的真实性。
您确定要继续连接 (yes/no) 吗?
所以我尝试使用 附加 expect/spawn 脚本来回答这个问题。
所以我有两个文件:
deploy.sh
#!/bin/bash
... Some functions and more
# call expect script to get a first time onto the target
/usr/bin/expect -d -f ./deployImage_helper.exp -- -p 9022 root@192.168.120.170
deploy_helper.exp
#!/usr/bin/env expect -f
set args [lrange $argv 1 end]
spawn ssh {*}$args
expect "The authenticity of host'[192.168.120.170]([192.168.120.170]:9022)' can't be established."
send "yes"
如果我 运行 deploy.sh 我收到错误消息:无效命令名称“192.168.120.170”
不知何故我没有得到 spawn 运行ning ssh.
如有任何帮助,我们将不胜感激。
编辑:
更改了 deploy.sh 第 4 行
set args [lrange $argv 1 end]
spawn ssh {*}$args
expect -re {The authenticity of .* can't be established.} {
send "yes"
}
interact
在 ""
变量和方括号 []
内(计算括号内的命令并改为放置结果),将被扩展和计算。您需要使用方括号 \[
或使用 {}
而不是 ""
。
顺便说一句,你可以通过 openssh 选项来禁止问这个问题(只显示警告):
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 9022 root@192.168.120.170
我只是有一个更大的 bash-script 在那里我遇到了一个问题,使用 ssh 连接到另一台电脑。那个是第一次访问(总是,真的 ;)),因此询问 无法确定主机 '[192.168.120.170]:9022 ([192.168.120.170]:9022)' 的真实性。 您确定要继续连接 (yes/no) 吗?
所以我尝试使用 附加 expect/spawn 脚本来回答这个问题。
所以我有两个文件: deploy.sh
#!/bin/bash
... Some functions and more
# call expect script to get a first time onto the target
/usr/bin/expect -d -f ./deployImage_helper.exp -- -p 9022 root@192.168.120.170
deploy_helper.exp
#!/usr/bin/env expect -f
set args [lrange $argv 1 end]
spawn ssh {*}$args
expect "The authenticity of host'[192.168.120.170]([192.168.120.170]:9022)' can't be established."
send "yes"
如果我 运行 deploy.sh 我收到错误消息:无效命令名称“192.168.120.170”
不知何故我没有得到 spawn 运行ning ssh.
如有任何帮助,我们将不胜感激。
编辑:
更改了 deploy.sh 第 4 行
set args [lrange $argv 1 end]
spawn ssh {*}$args
expect -re {The authenticity of .* can't be established.} {
send "yes"
}
interact
在 ""
变量和方括号 []
内(计算括号内的命令并改为放置结果),将被扩展和计算。您需要使用方括号 \[
或使用 {}
而不是 ""
。
顺便说一句,你可以通过 openssh 选项来禁止问这个问题(只显示警告):
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 9022 root@192.168.120.170