0

这似乎是一个非常受欢迎的问题,根据您查看的论坛,它有大约 1,000 个不同的答案。不幸的是,没有一个对我有用。

我正在尝试编写一个 bash shell 脚本,该脚本通过 SSH 连接到服务器列表并运行一个简单的stop <x> service命令来关闭每台机器上的应用程序服务器。

要手动执行此操作:

ssh user@server01.ourdomain.tld
user@server01.ourdomain.tld's password: ourpassword
Last login: Fri Nov 30 14:37:51 2012 from <some-ip-addr>
server01:[user@machinename ~]# (now we are SSHed in)

所以我问:给定一组服务器名称(server01通过server25),我如何编写一个 bash 脚本以 SSH 连接到所有服务器并运行service ourservice stop?该脚本一旦启动就不需要任何人工交互,因此应该为 SSH 命令提供适当的密码 ( ourpassword) 以供使用。此外,我需要在脚本 SSH 进入每个服务器后正确退出(或关闭连接),这样我们就不会挂起资源(打开连接等)。提前致谢。

4

1 回答 1

2

做这个

  1. ssh-keygen使用命令使自己成为公钥/私钥对
  2. 将您的私钥保存在.ssh/authorized_keys文件夹内的所有服务器中

现在您无需输入密码即可连接到任何服务器,这是我们在这里的第一个目标。

现在您可以使用以下语法向您的服务器发送命令:

ssh username@serverid 'command'

在这个页面上有一个很好的简短描述。

因此,您只需将 25 个命令连接到一个文件中并启动它,如下所示:

ssh user@server1.yourservers.com 'service ourservice stop'
ssh user@server2.yourservers.com 'service ourservice stop'
于 2012-12-02T15:33:37.987 回答