📌  相关文章
📜  如何 ssh 到多个服务器并运行命令 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:23:45.384000             🧑  作者: Mango

如何 ssh 到多个服务器并运行命令 - Shell-Bash

在进行 DevOps 工作时,有时我们需要同时在多个服务器上运行命令。手动登录到每个服务器并执行命令非常费时费力,但是使用 Shell 脚本,我们可以自动化这个过程,节省时间和精力。本文将介绍如何使用 Shell-Bash 脚本进行远程登录并在多个服务器上运行命令。

1. 配置 SSH 密钥认证

在远程登录之前,我们需要设置 SSH 密钥认证,以避免手动输入密码。首先,我们需要在本地生成密钥对:

ssh-keygen

然后,将公钥复制到需要连接的远程服务器上:

ssh-copy-id username@remote_server

其中,username 是您在远程服务器上的用户名,remote_server 是远程服务器的 IP 地址或域名。

2. 编写 Shell-Bash 脚本

接下来,我们开始编写 Shell-Bash 脚本。在本例中,我们将在三个服务器上运行命令,并将结果输出到 output.log 文件中。假设这些服务器的 IP 地址是 192.168.1.1192.168.1.2192.168.1.3,要运行的命令是 ls -l,则脚本代码如下:

#!/bin/bash

# 定义需要连接的服务器
servers=(
  "192.168.1.1"
  "192.168.1.2"
  "192.168.1.3"
)

# 遍历所有服务器并执行命令
for server in "${servers[@]}"
do
  echo "Running command on $server"
  ssh username@$server "ls -l" >> output.log
done

在此脚本中,我们首先定义了一个包含所有需要连接的服务器的数组 servers。然后,使用 for 循环遍历数组中的所有服务器,通过 SSH 登录到服务器并在服务器上运行命令 ls -l,结果将追加到 output.log 文件中。

3. 运行 Shell-Bash 脚本

保存脚本文件并赋予执行权限:

chmod +x script.sh

然后,运行脚本:

./script.sh

现在,脚本将自动登录到每个服务器并在服务器上运行命令,输出结果到 output.log 文件中。

4. 总结

在本文中,我们介绍了如何使用 Shell-Bash 脚本进行远程登录并在多个服务器上运行命令。使用这种方法,可以自动化多台服务器上的任务,并且可以节省您的时间和精力。