You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为内联Expect脚本添加条件判断,在遇到服务器指纹验证提示时自动发送YES

如何为内联Expect脚本添加条件判断,在遇到服务器指纹验证提示时自动发送YES

嗨,这个问题其实很常见,咱们只需要在Expect脚本里多添加一个expect分支来匹配指纹验证的提示就行啦!

你可以直接修改你的内联脚本,改成下面这样:

expect -c 'spawn ssh MYHOST@MYSERVER; expect {
    "the authenticity of host" { send "YES\r"; exp_continue }
    "FINGER PRINT" { send "YES\r"; exp_continue }
    "Password:" { send "MY PASSWORD\r"; interact }
}'

我来给你拆解一下这个修改的关键点:

  • 咱们用了Expect的多模式匹配语法,把多个需要监听的提示字符串放在expect {}代码块里,每个字符串对应一套执行动作。
  • 当脚本匹配到"the authenticity of host"或者"FINGER PRINT"这两个指纹验证相关的提示时,会先发送YES\r(一定要加回车符\r,不然服务器没法识别你的确认指令),然后通过exp_continue让脚本继续监听后续的输入提示——也就是接下来的密码输入请求。
  • 当匹配到"Password:"提示时,就发送你的密码加回车,最后用interact把终端控制权交还给你,方便后续操作服务器。

另外给你提个小建议:明文把密码写在脚本里其实存在安全风险,要是条件允许的话,更推荐配置SSH密钥登录,这样既不用手动输密码,也能跳过指纹验证的步骤,安全性和便捷性都更高哦!

备注:内容来源于stack exchange,提问作者Ilgar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:19:32