有时候需要批量执行命令,但是又不想搞一遍 ansible,刚好 ssh 也可以远程执行命令。

#!/bin/bash

# 定义 IP 列表
ip_list=("10.179.68.77" "192.168.10.10" "192.168.10.20")

if [ -z "$1" ]; then
  echo "run.sh xxx.sh"
  exit 1
fi

cmdFile=$1

# 遍历 IP 列表,使用 ssh 分别执行命令列表中的命令
for ip in "${ip_list[@]}"; do
    echo "================================================================================="
    echo "run cmd on host $ip"
    ssh root@$ip < $cmdFile
done

将需要执行的 shell,写在 xxx.sh 中,然后通过 run.sh xxx.sh 执行即可。