5.写一个脚本,实现判断192.168.1.024网络里,当前在线的D有哪些,能ping通则认为在线,在线输出"TP地址UP",不在线输出TP地址DOWN",无其他输出.(20分)
注:第五题是一个基本的shell脚本,考察的是输入一个ip 然后查看ip是否畅通,思路就是ping 这个ip 如果畅通 $?返回值为0 否则为不畅通。
5题 参考 #!/bin/bash . /etc/init.d/functions CMD="ping -c 2" IP="10.0.0." for n in {1..254} do { $CMD ${IP}$n &> /dev/null if [ $? -eq 0 ] then action "${IP}$n is ok" /bin/true fi }& done
6. (附加题)修改第五题中的脚本。将网络作为入参,增加对入参的合法性进行判断,入参举例: 192.168.1.024,如果正确,则正常输出结果,如果错误,则返回错误值51. (20分)
6题 参考 subnet=$1 if [[ "$subnet" =~ "([0-9]{1,3}.){3}([0-9]{1,3}/[0-9]+" ]] #!/bin/bash . /etc/init.d/functions CMD="ping -c 2" IP="10.0.0." if [[ "$IP" =~ "([0-9]{1,3}.){3}([0-9]{1,3}/[0-9]+" ]];then for n in {1..254} do { $CMD ${IP}$n &> /dev/null if [ $? -eq 0 ] then action "${IP}$n is ok" /bin/true fi }& done else return 51 fi
注:正则取XX.XX.XX.XX/XX格式,然后判断输出的信息是否匹配这个正则的格式,这个题应该是在第五题的基础上,加一个IP的判断,当时没想到,脑子发蒙,其实不难、