zoukankan      html  css  js  c++  java
  • 一段可以验证给定的IP地址字符串是否合法的bash脚本

    #!/bin/bash
    validate_ipaddress() {
      declare 
    -i iPart1
      declare 
    -i iPart2
      declare 
    -i iPart3
      declare 
    -i iPart4

      inputip
    =$1
      
    # validate it
      if [ -$inputip ]; then
        
    return 1
      fi

      echo 
    $inputip | grep --"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
      
    if [ $? -ne 0 ]; then
        
    return 1
      fi

      
    # separate the ip address
      ippart1=${inputip%%.*}
      inputip
    =${inputip#*.}
      ippart2=${inputip%%.*}
      inputip
    =${inputip#*.}
      ippart3=${inputip%%.*}
      ippart4
    =${inputip#*.}

      # check whether the ip number begins with zero, that is wrong syntax
      # if the string begins with zero, bash cannot convert it into integer correctly
      # ipart1 and ipart4 cannot be zero

      if echo $ippart1 | grep -"^0" || echo $ippart4 | grep -"^0"; then
        
    return 1
      fi

      
    if [ $ippart2 != "0" ] && echo $ippart2 | grep -"^0"; then
        
    return 1
      fi

      
    if [ $ippart3 != "0" ] && echo $ippart3 | grep -"^0"; then
        
    return 1
      fi
             
      iPart1
    =ippart1
      iPart2
    =ippart2
      iPart3
    =ippart3
      iPart4
    =ippart4
      
    if [ $iPart1 -gt 254 ] || [ $iPart2 -gt 254 ] || [ $iPart3 -gt 254 ] || [ $iPart4 -gt 254 ]; then
        
    return 1
      fi

      
    return 0
    }

    if validate_ipaddress $1; then
      echo 
    "legal"
    else
      echo 
    "illegal"
    fi

     注意在验证IP地址是否合法的RE中,使用了{m,n}这样的语法,这样写grep是要加-E option的,因为这是扩展语法,有些UNIX和Linux上的grep,不加-E(基本模式,非扩展模式)的时候也支持这个语法,但要写成\{m,n\}这样的样式

  • 相关阅读:
    scp 跨服务器传数据
    Mongo启动失败解决方案
    centos7 NET模式配置虚拟机
    centos7虚拟机配置桥接模式
    Linux centos7 查看cpu 磁盘 内存使用情况
    centos7修改时间和时区
    fiddler培训
    docker学习笔记
    docker-ce安装官翻
    Nginx+Tomcat简单负载均衡
  • 原文地址:https://www.cnblogs.com/super119/p/1910017.html
Copyright © 2011-2022 走看看