免密批处理shell

免密批处理shell
大并发批处理工具,真正需要执行的脚本放在test.sh里面
执行的机器清单放在ip.txt里面
test.sh ip.txt 以及该脚本放在与清单免密相通的跳转机上执行

#!/bin/bash
parallel=60
#TYPE=$1
pid=$$
fifo_tmpfile=/tmp/$pid.fifo
HOST_LIST=/opt/bao/ip.txt
DATE=`date +%Y-%m-%d`
RESULT=result-set-$DATE.csv

LOCAL_SHELL=/opt/bao/test.sh
chmod +x $LOCAL_SHELL
REMOTE_COMMAND="sudo ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -o ConnectTimeout=5 "
echo "HOST_IP,Result" 

PingTest()
{
    dst_ip=$1
    if [ -n "`ping -w 1 -i 0.2 -c 2 ${dst_ip} 2>/dev/null|grep time=[0-9]`" ];then
        return 0
    else
        return 1
    fi
}


process()
{
    host=$1
    PingTest $host
    if [ $? -ne 0 ];then
        echo "$host,connect_failled" 
    else
        sudo ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -o ConnectTimeout=5 $host hostname 1>/dev/null 2>/dev/null
        if [ $? -eq 0 ];then
            MSG=`$REMOTE_COMMAND $host "bash -s " 2>/dev/null < $LOCAL_SHELL `
	    echo "$host,$MSG" 
        else
           echo "$host,No_Public_Key"
        fi
    fi

    echo >&6
}

main()
{
    mkfifo $fifo_tmpfile
    exec 6<> $fifo_tmpfile
    rm $fifo_tmpfile

    for((i=0;i<$parallel;i++));do
        echo
    done >&6
    cnt=0
    for host in `cat $HOST_LIST`
    do
       cnt=$(($cnt + 1))
       read -u6
       process $host &
    done

    wait
    exec 6>&-
}
main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值