当我尝试使用 SSH shell 脚本中的命令,该命令就在那里。你有一个如何使用的例子吗 SSH 在 shell 脚本中?

有帮助吗?

解决方案

取决于您想做什么以及如何使用它。如果您只想在另一台机器上远程安全地执行命令,只需使用

ssh user@host command

例如

ssh user@host ls

为了安全地执行此操作,您需要在运行时询问用户密码,或者在远程主机上设置密钥。

其他提示

首先,您需要确保您已设置无密码(公钥登录)。至少有两种风格的 ssh,其配置文件格式略有不同。检查 SSH 系统上的联机帮助页,请咨询本地系统管理员或前往 如何设置公钥验证?.

跑步 SSH 在批处理模式下(例如在 shell 脚本中),您需要传递要运行的命令。语法是:

ssh host command

如果要同时运行多个命令,请使用引号和分号:

ssh host "command1; command2"

需要使用引号来保护分号免受 shell 解释器的影响。如果您忽略它们,则只有第一个命令将远程运行,其余所有命令将在本地计算机上运行。

您可以使用 expect 命令填充用户名/密码信息。

您需要将您的 SSH 公钥放入 ~/.ssh/authorized_keys 远程主机上的文件。然后您就可以无需密码地通过 SSH 连接到该主机。

或者你可以使用 ssh-agent. 。我建议不要将密码存储在脚本中。

最简单的方法是为运行脚本的用户使用证书。

更复杂的是,当 shell 命令要求输入密码时,将密码添加到标准输入中。期望,perl库,向用户显示询问密码的提示(如果是交互式的,至少),有很多选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top