Lesson43 Shell脚本的编写——实现检测同一个机房里的20台服务器哪些是通的,能够连通的输出主机ip
vim host_ip.sh #编写host_ip.sh文件
[ -e "/mnt/host_ip" ]&&{ #文件是否存在
echo /mnt/host_ip is exist! #若存在,直接输出/mnt/host_ip is exist!
echo "[O]verwrite [B]ackup [S]kip" #提供给用户选项,询问用户要进行何种操作
read -p "What action do you want to do:" WORD #从用户节界面传递变量WORD
ACTION=`echo $WORD | tr 'a-z' 'A-Z'` #将变量WORD的小写变成大写(忽略大小写)
[ “$ACTION” = “O” ]&&{ #当获取的变量为O时
rm -fr /mnt/host_ip #删除/mnt/host_ip原文件
}
[ “$ACTION” = “B” ]&&{ #当获取的变量为B时
mv /mnt/host_ip /mnt/host_ip.back #将已经存在的/mnt/host_ip文件重命名为/mnt/host_ip.back
}
[ “$ACTION” = “S” ]&&{ #当获取的变量为S时
exit 0 #直接退出
}
for ip in {1..20} #获取能够ping通主机的ip的主函数
do
ping -c1 -w1 172.25.254.$ip &>/dev/null &&{ #ping一次,等待一秒,将能够ping通的ip输出到/mnt/host_ip >>表示追加,>表示覆盖
echo 172.25.254.$ip >> /mnt/host_ip
}
done
执行脚本,可以看到选项出现,等待用户输入选项
当用户输入o时(不区分大小写)
可以看到,重写了/mnt/host_ip文件,此文件中存放能ping通本主机的ip
当用户输入b时(不区分大小写),可以看到,生成了host_ip.back文件,此文件中存放能ping通本主机的ip
当用户输入s时(不区分大小写),直接退出,不做任何操作