ssh批量远程执行脚本screen后台运行

背景

项目有并行计算需求,配置了36台服务器集群,通过脚本自动后台执行任务。

准备

部署时将操作机ssh公钥拷贝至每台集群服务器,确保可以无密码执行scp和ssh命令。
安装avahi-daemon确保可已通过hostname连接服务器
安装screen用于后台运行

实现

在本地编写需要执行的脚本~/task.sh
自动执行脚本如下

#!/bin/bash
list=(TEST-00 TEST-01 TEST-02 TEST-03)
for host in ${list[*]}
do
scp -o "StrictHostKeyChecking no" ~/task.sh user@$host:/tmp/task.sh
ssh -o "StrictHostKeyChecking no" user@$host screen -dm bash /tmp/task.sh
done

其中-o "StrictHostKeyChecking no" 参数可避免输入yes中断脚本
后台命令screen -dm [cmooand]可以创建新的screen session
执行command命令后detach而不进入session
ssh会话中断后cmooand依然执行

原文地址:https://www.cnblogs.com/azureology/p/13259162.html