集群同步命令的脚本

 #!/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!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容