使用脚本在 ssh 服务器上远程运行命令

Mal*_*rba 6 server ssh scripts

我想在 ssh-server 上运行一个命令,但是这个命令是由我本地机器上的脚本决定的。我怎么做?

一个清晰的例子:
我想在这里写一个脚本(foo.sh),它接受一个参数。如果我运行./foo.sh 0它应该以某种方式向服务器计算机发送关闭信号,但如果我运行./foo.sh 1它应该发送重启信号。

我知道如何通过 ssh 手动登录,并且我已经将 ssh-keys 设置为跳过密码,但我不知道如何使用脚本自动执行该过程。

Oli*_*Oli 9

您可以将命令(或命令列表,以 分隔;)传递给 SSH 连接,如下所示:

ssh user@server-address "./foo 1"
Run Code Online (Sandbox Code Playgroud)

如果您有一个输出0or的本地脚本1,您可以进一步简化:

ssh user@server-address "./foo `/path/to/your/script`"
Run Code Online (Sandbox Code Playgroud)

反引号中的代码在其他任何事情之前执行,其输出动态放入行中。


Nic*_*cci 7

正如 Oli 评论的那样,您可以告诉 SSH 发送命令。您可以修改您的脚本,以便如果您的命令行 arg 为 1,则它会发送ssh user@server "shutdown -h now". 请记住,您必须是另一台机器上的超级用户才能将其关闭。

编辑:而不是使用 root,正如放入usersudoers 文件的注释中所建议的那样,可以在没有密码的情况下关闭机器。