运维角度来说,写shell脚本经常会遇到判断输入的值是否合法,比如IP、邮件地址等。那么,根据自身写脚本中总结的判断IP合法性脚本分享给网友,遇到时能有所参考。

思路:IP由四位数字组成,以点分割,每个字段不能大于255,必须符合这种格式

方法1:

#!/bin/bash
# blog: http://lizhenliang.blog.51cto.comfunction check_ip() {IP=$1VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; thenif [ ${VALID_CHECK:-no} == "yes" ]; thenecho "IP $IP available."elseecho "IP $IP not available!"fielseecho "IP format error!"fi
}
# Example
check_ip 192.168.1.1
check_ip 256.1.1.1

方法2:

#!/bin/bash
# blog: http://lizhenliang.blog.51cto.comfunction check_ip() {IP=$1if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; thenFIELD1=$(echo $IP|cut -d. -f1)FIELD2=$(echo $IP|cut -d. -f2)FIELD3=$(echo $IP|cut -d. -f3)FIELD4=$(echo $IP|cut -d. -f4)if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; thenecho "IP $IP available."elseecho "IP $IP not available!"fielseecho "IP format error!"fi
}
# Example
check_ip 192.168.1.1
check_ip 256.1.1.1

加个循环,如果错误则重新输入,直到正确:

#!/bin/bash
# blog: http://lizhenliang.blog.51cto.comfunction check_ip() {local IP=$1VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; thenif [ $VALID_CHECK == "yes" ]; thenecho "IP $IP  available!"return 0elseecho "IP $IP not available!"return 1fielseecho "IP format error!"return 1fi
}
while true; doread -p "Please enter IP: " IPcheck_ip $IP[ $? -eq 0 ] && break
done

Shell脚本判断IP是否合法性(多种方法)相关推荐

  1. 判断ip地址的合法性python_使用Python判断IP地址合法性的方法实例

    一.使用方法和执行效果请看图: 二.python实现代码: [root@yang python]# vi check_ip.py #!/usr/bin/python import os,sys def ...

  2. linux怎么判断网络是否正常运行,Linux shell脚本判断服务器网络是否可以上网

    微信公众号:「小林coding」 用简洁的方式,分享编程小知识. Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需 ...

  3. linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从 ...

  4. bat脚本监控tomcat并启动_Windows server利用批处理脚本判断端口启动tomcat的方法

    win server服务器上面的tomcat老是不定时挂掉, 于是利用定时操作脚本判断tomcat80端口是否在运行, 如果运行则放过, 如果down掉就启动tomcat,解决tomcat不定时挂掉导 ...

  5. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  6. shell脚本字符串截取的8种方法

    shell脚本字符串截取的8种方法 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 1 echo ${var#*//} 其中 ...

  7. php.ini $ phphome,shell 脚本安装PHP扩展的简单方法

    实例如下: #!/bin/bash #This script is to install PHP extensions #Author=steven #Email=775189187@qq.com # ...

  8. shell脚本之IP计算器

    一.需求说明   在CSDN问答区经常有学生提问关于IP地址计算的问题,这种题型无非就是根据IP地址和掩码计算网络地址.广播地址.地址掩码.可用地址范围.可用主机数量.其实关于这些我在博文TCP/IP ...

  9. Linux中 shell 脚本获取当前工作目录的方法

    Linux中 shell 脚本获取当前工作目录的方法 1. 示例 2. 注意: 参考: 1. 示例 test.sh target_dir=$(cd $(dirname $0); pwd) echo $ ...

最新文章

  1. mongo java client_mongodb java客户端的使用,即MongoClient
  2. 利用反射搭建orm框架
  3. 小波的秘密2_MATLAB图像多尺度分析
  4. 分享:我是怎么在github上找到优秀的仓库的?
  5. docker操作之mysql容器
  6. FreeBSD的起源和发展
  7. 小汤学编程之JAVA基础day05——数组
  8. 到2030年丰田将斥资135亿美元开发电动汽车电池技术及供应系统
  9. Android Thread/Runnable/Handler用法
  10. 人工智能写作:想要和智能对话 本AI给你的写作指个路
  11. 华为端口聚合命令_华为汇聚交换机链路聚合配置命令
  12. 流量卡之家:物联网僵尸网络和DDoS攻击:构建网络风险防火墙
  13. GPS同步时钟(NTP时钟服务器)常见故障解决与价格差异分析
  14. 机器学习-凸优化理论-课堂笔记
  15. 计算机科学与技术专业认证研讨,CNCC丨一流本科专业建设暨工程认证研讨会
  16. virtual dimention简单改进版
  17. 以太坊:过去、现在、未来
  18. 揭阳市人民医院基于对称双数据中心的双活容灾系统建设项目
  19. MATLAB矩阵分块拼装
  20. 全球与中国带灯轻触开关市场现状及未来发展趋势

热门文章

  1. [Asp.net mvc]OutputCacheAttribute
  2. Compiling: main.cpp /bin/sh: g++: not found
  3. java基础学习总结——接口
  4. 一个弹出式menu的制作
  5. boost asio io_service学习笔记
  6. Ruby系统中的AJAX开发技术简析
  7. 学会处理ASP.NET的页面和请求状态信息 (转载)
  8. 4种方法可以缓解网络瓶颈
  9. ARC在Release与Debug模式中内存释放的坑
  10. 分布式架构spring mvc +mybatis +shiro+ Activiti +Alibaba Druid