如何将附加脚本传递给已经存在的 ssh 脚本

如何将附加脚本传递给已经存在的 ssh 脚本

用例:

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

在我看来,整个方法可以改进:

  1. 首先你可以使用基于密钥的 SSH 登录无需密码即可安全地验证自己 - 生成密钥时只需将密码留空。

  2. 接下来您可以创建~/.ssh/config文件来简化创建 ssh 连接的过程。

  3. 然后自动化脚本就可以执行以下步骤:

    • 使用scp(或者rsync)将您的脚本复制到远程机器;

    • 跑步远程脚本然后将其删除。


  1. 或者你也可以挂载文件夹到远程机器使用sshfs然后运行远程脚本

相关内容