📅  最后修改于: 2023-12-03 15:23:45.384000             🧑  作者: Mango
在进行 DevOps 工作时,有时我们需要同时在多个服务器上运行命令。手动登录到每个服务器并执行命令非常费时费力,但是使用 Shell 脚本,我们可以自动化这个过程,节省时间和精力。本文将介绍如何使用 Shell-Bash 脚本进行远程登录并在多个服务器上运行命令。
在远程登录之前,我们需要设置 SSH 密钥认证,以避免手动输入密码。首先,我们需要在本地生成密钥对:
ssh-keygen
然后,将公钥复制到需要连接的远程服务器上:
ssh-copy-id username@remote_server
其中,username
是您在远程服务器上的用户名,remote_server
是远程服务器的 IP 地址或域名。
接下来,我们开始编写 Shell-Bash 脚本。在本例中,我们将在三个服务器上运行命令,并将结果输出到 output.log
文件中。假设这些服务器的 IP 地址是 192.168.1.1
、192.168.1.2
和 192.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
文件中。
保存脚本文件并赋予执行权限:
chmod +x script.sh
然后,运行脚本:
./script.sh
现在,脚本将自动登录到每个服务器并在服务器上运行命令,输出结果到 output.log
文件中。
在本文中,我们介绍了如何使用 Shell-Bash 脚本进行远程登录并在多个服务器上运行命令。使用这种方法,可以自动化多台服务器上的任务,并且可以节省您的时间和精力。