linux命令多服务器分发执行【xcall】

前言:

  1. linux服务器/usr/local/sbin目录,一般是用户自己安装软件后的命令所在目录。将命令放在此处可以在linux中任意位置执行,相当于自动添加了全局变量,所以将xcall放入此处较为合适。
  2. 各个服务器需提前添加ssh互信
  3. 本命令分发脚本用法:
    1)在任意目录输入:xcall 命令即可在配置的服务器执行
    2)会自动进入用户,执行命令的所在目录,执行命令
    3)如果有输出,会将输出打印到控制台

按顺序执行以下命令

  • 进入用户软件安装命令目录
    cd /usr/local/sbin
  • 创建xcall命令,也可直接复制脚本内容直接vim并添加到里面
    touch xcall
  • 添加可执行权限
    chmod 710 xcall
  • 将以下内容添加到xcall中
#!/bin/bash

file_name='xcall-server.list'
cmd_str=$1

pwdstr=$(pwd)
serverListPath=$(dirname $0)
cd $pwdstr
serverlist_file="$serverListPath/$file_name"

if [ ! -e $serverlist_file ] ; then
    echo "xcall-server.list not exist, whole path is $serverlist_file";
    exit 0;
fi

while read line
do
    if [ -n "$line" ] ; then
        echo "DOING --->" $line "<---"
        ssh root@$line "cd $pwdstr;$@" < /dev/null
    fi
done < $serverlist_file
  • 在当前目录下新建文件,添加执行的服务器列表
    touch /usr/local/sbin/xcall-server.list
  • 执行以下命令
cat >> /etc/hosts << EOF
192.168.1.11
192.168.1.21
192.168.1.22
EOF
posted @ 2022-11-21 00:19  无畏D尘埃  阅读(526)  评论(0编辑  收藏  举报