【发布时间】:2011-06-14 10:22:42
【问题描述】:
我正在尝试在 Bash 脚本中使用 expect 来提供 SSH 密码。提供密码是可行的,但我并没有像我应该的那样进入 SSH 会话。它可以追溯到 Bash。
我的脚本:
#!/bin/bash
read -s PWD
/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com'
expect "password"
send "$PWD\n"
EOD
echo "you're out"
我的脚本的输出:
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com
usr@$myhost.example.com's password: you're out
我想要我的 SSH 会话,并且只有在我退出它时才能返回到我的 Bash 脚本。
我之所以在expect 之前使用 Bash,是因为我必须使用菜单。我可以选择要连接的单元/设备。
想要回复我应该使用 SSH 密钥的人,请弃权。
【问题讨论】:
-
请看第一行:想要回复我应该使用SSH密钥的人请弃权
-
我会编辑你的第一行以更友好一点。您可能会考虑类似“由于限制,我根本无法使用 SSH 密钥,我必须找到一种方法让它与期望一起工作”。您应该期望人们可能会自然而然地好奇您为什么不使用密钥,并且只是想提供帮助:) @Ignacio 没有建议您使用它们,他只是确认它为约束而不是疏忽。
-
在这种情况下我会尝试使用 kermit。它有一个非常健壮的脚本语言columbia.edu/kermit/skermit.html#scripts