shell原生实现批量管理机器

       1.准备环境

           1.hosts.info是主机文件

           2.t1.sh t2.sh t3.sh是shell脚本文件

       

shell自动批量登录主机执行任务_xml


10.155.6.7  admin 22 passwd1
10.155.6.11 admin 22 passwd1
10.155.6.8  admin 22 passwd1
10.155.6.9  admin 22 passwd1
10.155.6.33  admin 22 passwd1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

hosts.info

#!/bin/bash
COMMAND=$*
HOST_INFO=hosts.info
IP_LIST=`awk '/^[^#]/{print $1}' $HOST_INFO`
for IP in $IP_LIST;do
        USER=`awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO`
        PORT=`awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO`
        PASSWD=`awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO`
        expect -c "
                spawn ssh -p $PORT $USER@$IP
                expect {
                        \"(yes/no*)\" {send \"yes\r\"; exp_continue }
                        \"password:\" {send \"$PASSWD\r\"; exp_continue}
                        \"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue}  
                }
        "
        echo "-----------------------------------"
done
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

t1.sh

    t2.sh是自动到ssh登录到每台主机执行shell命令

    sh t2.sh 'sudo ls /tmp && sudo rm -fr /tmp/*xml'
    sh t2.sh 'cd /home/secure/check && sh 36c221be-6ab2-ef53-1589-fe16877914f4.sh null null null'

    

shell自动批量登录主机执行任务_IP_02

    t3.sh 自动把所有远程主机生成的结果文件拷贝到本机

#!/bin/bash
HOST_INFO=hosts.info
IP_LIST=`awk '/^[^#]/{print $1}' $HOST_INFO`
for IP in $IP_LIST;do
        USER=`awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO`
        PORT=`awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO`
        PASSWD=`awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO`
        expect -c "
                spawn scp -r $USER@$IP:/tmp/*.xml .
                expect {
                        \"(yes/no*)\" {send \"yes\r\"; exp_continue }
                        \"password:\" {send \"$PASSWD\r\ exit\r\"; exp_continue}
                }
        "
        echo "-----------------------------------"
done
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

t3.sh

     sh  t3.sh

    

shell自动批量登录主机执行任务_xml_03

下载结果文件到本地

       

shell自动批量登录主机执行任务_IP_04

 自动基线配置命令


usermod -L listen
usermod -L gdm
usermod -L webservd
usermod -L nobody
usermod -L nobody4
usermod -L noaccess


echo 'umask 027' >> /etc/profile
sed -i 's/export TMOUT=.*/export TMOUT=300/g' /etc/profile
mkdir -p /etc/syslog-ng/


cat > /etc/syslog-ng/syslog-ng.conf <<'EOF'
destination logserver { udp("10.10.10.10" port(514)); };
log { source(src); destination(logserver); };
EOF


echo '*.* @192.168.0.1' >> /etc/rsyslog.conf
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

基线配置命令集合

 使用这种shell方式可以快速在多台主机上执行相同命令,提高主机管理效率

作者:不懂123