美文网首页
Linux杂记:脚本里判断一个IP地址是否合法

Linux杂记:脚本里判断一个IP地址是否合法

作者: 还没帮马里奥再闯一关 | 来源:发表于2021-01-10 14:05 被阅读0次
    以一个IP地址为参数,判断该IP地址所在网段的主机在线状态,并打印出来
    #!/bin/bash
    set -ue
    
    read -p "please input ipaddrs: " net 
    [[ $net =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] || (echo "This is not a correct IP address";exit 10)         #判断左边的字符串是否和右边的字符串相等,等同于判断了IP地址是否合法
    net1=`echo "$net" | egrep -o "^([0-9]+\.){3}"`
    for id in {1..254} ;do
        {
        ping -c1 -w1 $net1$id &>/dev/null && echo "$net1$id is up " || echo "$net1$id is down"
        }&
    done
    wait
    

    在读入一个IP地址为参数后,首先判断IP地址是否合法,合法才执行后续命令
    { COMMAND; }&在脚本里可以实现命令后台并发执行
    wait可以实现在命令结束后自动切换到下一个命令提示符

    这里可能涉及条件测试的知识:

    test和 [ ]用法
    -z STRING 字符串是否为空,没定义或空为真,不空为假,
    -n STRING 字符串是否不空,不空为真,空为假 
       STRING   同上
    STRING1 = STRING2 是否等于,注意 = 前后有空格
    STRING1 != STRING2 是否不等于**
    **> ascii码是否大于ascii码
    < 是否小于
    
    [[]] 用法,建议,当使用正则表达式或通配符使用,一般情况使用 [ ]
    == 左侧字符串是否和右侧的PATTERN相同
     注意:此表达式用于[[ ]]中,PATTERN为通配符
    =~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
     注意: 此表达式用于[[ ]]中;扩展的正则表达式
    

    相关文章

      网友评论

          本文标题:Linux杂记:脚本里判断一个IP地址是否合法

          本文链接:https://www.haomeiwen.com/subject/afikaktx.html