Linux 集群上批量执行同一命令 shell 脚本
2014-09-28 16:42
1236 查看
因实际开发需要,在集群上多个机器上执行相同的命令,比如执行一个指定的脚本、删除相同目录下的文件(这个得慎重~~)等,组内的成员开发了一个 allscp (可以批量执行scp 命令来同步线上代码)非常好用,我自己也写了一个,主要是使用ssh 登陆到一个服务器上,然后执行一个指定的命令。
先贴Shell 代码:
代码很简单,不解释。
使用方法:
1. 新建一个文件,文件中为服务器的地址,每个一行;
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!
先贴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. 新建一个文件,文件中为服务器的地址,每个一行;
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!
相关文章推荐
- 简易登录,批量执行命令,批量copy文件shell脚本【Linux运维之道之脚本案例】 推荐
- linux远程批量执行命令的shell脚本
- 简易登录,批量执行命令,批量copy文件shell脚本【Linux运维之道之脚本案例】
- linux下shell脚本执行方法及exec和source命令
- linux 远端执行shell脚本 批量结束各个远端节点进程
- Linux远程执行Shell命令或脚本
- linux 通过shell脚本在本地执行远程机器命令
- Linux中使用crontab命令定时执行shell脚本或其他Linux命令
- Linux执行shell脚本方式及区别&命令后台运行
- 每天一个linux命令(62):sh命令 /Linux中执行shell脚本的4种方法总结
- [Linux]定时执行命令的shell脚本,删除脚本自身,判断输出是否为空
- Linux执行shell脚本方式及区别&命令后台运行
- linux下shell脚本执行方法及exec和source命令
- Linux/shell命令的实际应用——while;do;循环执行脚本
- linux 下shell脚本执行多个命令的方法
- Linux执行shell脚本方式及区别&命令后台运行
- Linux远程拷贝&远程执行命令shell脚本
- java 执行linux命令或shell脚本方法
- Linux之Shell脚本while循环ssh登录执行命令
- Linux学习笔记:bash特性之多命令执行,shell脚本