脚本
#!/bin/bash
#sudo apt-get install tcl tk expect
workdir="/opt/workjzjkdir"
w_pass='123456*'
mkdir -p $workdir
cd $workdir
pingTong=0
ipFile=$1
if [ -f "$ipFile" ] ;then
echo "加载IP列表文件完成。"
echo "总共有`cat $ipFile |wc -l`个IP需要处理:"
else
echo "加载IP列表文件出错:"
echo "请把ip列表文件放在/opt/workjzjkdir目录下"
echo "请此程序时输入命令后紧跟输入 空格和ip列表文件名"
exit 0
fi
ipPing(){
pingTong=0
n=$(timeout 1 ping $ip -c 1 |grep "0% packet loss"|grep -v grep|wc -l)
if [[ $n -eq 1 ]] ; then
#echo "${ip} ping通";
pingTong=1
else
#echo "${ip} ping不通";
pingTong=0
fi
}
ipSsh(){
expect -c "
set timeout 1
spawn ssh $ip "echo sshLoginOK001"
expect {
"*assword" { send "${w_pass}r";}
"yes/no" { send "yesr"; exp_continue;}
}
expect eof"
}
i=0
cat $ipFile | while read ip
do
let i+=1;
ipPing
if [[ $pingTong -eq 1 ]] ; then
n2=$(ipSsh |grep sshLoginOK001|grep -v grep|wc -l)
if [[ $n2 -eq 2 ]] ; then
printf "%10d%20s%20s%20sn" $i ${ip} ping通过 ssh登录成功
else
printf "%10d%20s%20s%20sn" $i ${ip} ping通过 ssh登录失败
fi
else
printf "%10d%20s%20s%20sn" $i ${ip} ping不通 ssh不用测试
fi
done
使用
#!/bin/bash
#sudo apt-get install tcl tk expect
workdir="/opt/workjzjkdir"
w_pass='123456*'
mkdir -p $workdir
cd $workdir
pingTong=0
#nohup ./piliangping.sh ip_list > piliangping.log &
#cp piliangping.log log
cat log |grep ping > log.01
a=`cat log.01 |wc -l`
b=`cat log.01 |grep "ping通过"|wc -l`
c=`cat log.01 |grep "ping不通"|wc -l`
d=`cat log.01 |grep "ssh登录成功"|wc -l`
e=`cat log.01 |grep "ssh登录失败"|wc -l`
#printf "%20s%20s%20s%20s%20sn" IP总数量 ping通总数量 ping不通总数量 ssh登录成功总数量 ssh登录失败总数量
printf "%10s%10s%10s%10s%10sn" sum pingOK pingErr sshOK sshErr
printf "%10s%10s%10s%10s%10sn" $a $b $c $d $e