【Parallel SSH】Ubuntu系统配置pssh实现多主机并行执行Master分发的命令

一、配置多机免密登录

假设有1台主机作为Master分发命令,3台主机作为Servers执行命令。假设Master主机内网IP地址为192.168.0.12,Servers外网IP及对应的hostname分别为:

191.229.196.150 Client1
115.220.157.181 Client2
198.54.177.207 Client3

为了避免切换身份带来的权限问题,这里配置Master以root身份通过SSH免密登录Servers(同样是root),如何配置root作为默认登录使用的教程参考此篇文章
首先,配置Master的/etc/hosts,在末尾添加以下內容,这里假设Master的hostname也叫Master(必要时可删除第一二行本地回环地址)

192.168.0.12 Master
191.229.196.150 Client1
115.220.157.181 Client2
198.54.177.207 Client3

在Master上生成密钥传输给所有的Servers:

ssh-keygen
cat id_rsa.pub >> authorized_keys
ssh-copy-id -i id_rsa.pub -p22 root@Client1

测试是否可以免密登录,成功后exit即可退出:

ssh Client1

二、ubuntu系统安装pssh

不知道是哪个起效果,反正可以都安装一遍:

sudo apt-get update
sudo apt-get install parallel
sudo apt-get install pssh

测试paraller-ssh是否安装成功

parallel-ssh --version

三、并行命令脚本编写

如果要实现多个Servers对各自某个路径下的文件进行操作(如查询使用量),或者多个Servers执行同一个命令(如清理缓存),可参考以下脚本编写(注意循环内的&一定不能丢,要不然就是顺序执行,不是并行了):

#!/bin/bash

servers=("Client1" "Client2" "Client3")
folders=("/path/to/client1_folder" "/path/to/client2_folder" "/path/to/client3_folder")
My_ssh() {
  server="$1"
  folder="$2"
  ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p 22 "$server" " time du -sh '$folder'"
  ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p 22 "$server" " sync;echo 3 > /proc/sys/vm/drop_caches "
}

export -f My_ssh

for i in "${!servers[@]}"; do
  (
  output_file="output_${i}.txt"
  parallel -j 5 My_ssh ::: "${servers[i]}" ::: "${folders[i]}" > "$output_file"
  ) &
done

wait

echo "All operations have been completed."

保存为XXX.sh,赋予其可执行命令,在Master主机上执行,执行结果保存为多个output_n.txt:

chmod +x XXX.sh
./XXX.sh

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 00:58:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 00:58:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 00:58:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 00:58:04       69 阅读

热门阅读

  1. 刷题——有效括号序列

    2024-07-16 00:58:04       24 阅读
  2. Ningx配置前端http缓存

    2024-07-16 00:58:04       23 阅读
  3. 微信小程序学习使用问题总结

    2024-07-16 00:58:04       20 阅读
  4. 数据集配置

    2024-07-16 00:58:04       21 阅读