一个shell的面试题

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的判断,当时没想到,脑子发蒙,其实不难、

原文地址:https://www.cnblogs.com/tim1blog/p/10011235.html