用例:
1> ssh 进入机器 -->使用 expect 脚本自动化
2> 通过 ssh 进入机器后,从本地机器运行脚本到远程机器
目前我正在采取以下方法:
ssh [email protected] < ./s4.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
[email protected]'s password: <Provide password>
<Script executes without any errors>
在上述场景中,我必须手动提供密码,这不是自动化的预期用例。
因此将使用预期选项,这将有助于自动化登录过程。
示例代码:
#!/usr/bin/expect -f
spawn ssh [email protected]
expect "password"
send "password\r"
此代码有助于实现自动登录,但在预期代码中……我将如何发出命令来从当前脚本内部触发另一个脚本?
答案1
在我看来,整个方法可以改进:
首先你可以使用基于密钥的 SSH 登录无需密码即可安全地验证自己 - 生成密钥时只需将密码留空。
接下来您可以创建
~/.ssh/config
文件来简化创建 ssh 连接的过程。然后自动化脚本就可以执行以下步骤: