【发布时间】:2021-10-19 16:13:50
【问题描述】:
我不习惯在 bash 脚本中使用期望,无论如何我想要实现的是一个 bash 脚本,当询问密码时,它会检查与远程机器的连接是否正确,然后如果正确远程执行一些命令,然后退出
直到现在我设法将期望放在一个变量中进行检查(我知道这很丑):
SCRIPT1=$(expect -c "
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $USER@$HOST
expect \"assword:\"
send \"$PASS\r\"
expect \"\\\\$\"
send \"show \/SP\/clock\r\"
expect -re \"$USER.*\"
send \"exit\r\"
")
echo "$SCRIPT1"
有没有办法在 bash 脚本中实现密码检查?
编辑:在这种情况下,公钥身份验证不是一个选项,抱歉
【问题讨论】:
-
为什么不直接运行
ssh,让它提示用户输入密码? -
跳过密码,设置公钥认证。
-
在 shell 脚本中嵌入 Expect 很棘手。看看我的sexpect
-
如果您无论如何都要信任每个主机 (
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no),为什么不直接使用 telnet? ;)