Linux 集群上批量执行同一命令 shell 脚本
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
因实际开发需要,在集群上多个机器上执行相同的命令,比如执行一个指定的脚本、删除相同目录下的文件(这个得慎重~~)等,组内的成员开发了一个 allscp (可以批量执行scp 命令来同步线上代码)非常好用,我自己也写了一个,主要是使用ssh 登陆到一个服务器上,然后执行一个指定的命令。
先贴Shell 代码:
#!/bin/bash
if [ "$#" -ne 2 ] ; then
echo "USAGE: $0 -f server_list_file cmd"
exit -1
fi
file_name=$1
cmd_str=$2
cwd=$(pwd)
cd $cwd
serverlist_file="$cwd/$file_name"
if [ ! -e $serverlist_file ] ; then
echo 'server.list not exist';
exit 0
fi
while read line
do
#echo $line
if [ -n "$line" ] ; then
echo "DOING--->>>>>" $line "<<<<<<<"
ssh $line $cmd_str < /dev/null > /dev/null
if [ $? -eq 0 ] ; then
echo "$cmd_str done!"
else
echo "error: " $?
fi
fi
done < $serverlist_file
代码很简单,不解释。
使用方法:
1. 新建一个文件host_file_list,文件中为服务器的地址,每个一行;
2. 保存上面shell 脚本, 如保存为 allcmd.sh,注意使用 chmod +x allcmd.sh 使之成为可执行脚本;
3. 运行 allcmd.sh host_file_list md 即可, host_file_list 是第1步的文件名(记得和 allcmd.sh 放在相同目录下), cmd 就是要执行的命令,用单引号包起来,例如:删除/home/nuaazdh/下面的一个 tmp.txt 文件: allcmd.sh host_file_list 'rm /home/nuaazdh/tmp.txt'
4. done!
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献6条内容
所有评论(0)