扫描网段内的所有主机;在线的,使用绿色显示;不在线,使用红色显示;
最后分别显示:在线和不在线各有多少主机;
为了练习shell 这里只用了 for循环,虽然效率低下毕竟是练习为目的不是生产环境下所用。
#!/bin/bash########################################################################## File Name: 005.sh# Author: LookBack# Email: taoxiaoyuzy@vip.qq.com# Created Time: Wed 09 Jul 2014 04:06:57 AM CST#########################################################################echo=echofor cmd in echo /bin/echo; do $cmd >/dev/null 2>&1 || continue if ! $cmd -e "" | grep -qE '^-e'; then echo=$cmd break fidoneCSI=$($echo -e "\033[")CEND="${CSI}0m"CDGREEN="${CSI}32m"CRED="${CSI}1;31m"CGREEN="${CSI}1;32m"CYELLOW="${CSI}1;33m"CBLUE="${CSI}1;34m"CMAGENTA="${CSI}1;35m"CCYAN="${CSI}1;36m"CQUESTION="$CMAGENTA"CWARNING="$CRED"CMSG="$CCYAN"declare -i I=0declare -i sum1=0declare -i sum2=0for ((I=0;$I <= 255;I++)); do ping -c1 -W1 172.16.250.$I &> /dev/null check=$? if [ "$check" = "0" ]; then echo "${CGREEN} 172.16.250.$I ${CEND}" let sum1++ else echo "${CWARNING} 172.16.250.$I ${CEND}" let sum2++ fidoneecho "${CGREEN} has $sum1 IP online. ${CEND}"echo "${CWARNING} has $sum2 IP offline. ${CEND}"