题
当我尝试使用 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库,向用户显示询问密码的提示(如果是交互式的,至少),有很多选择。
不隶属于 StackOverflow