Shell脚本判断IP是否合法性

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

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

方法1:

function check_ip() {
    IP=$1
    VALID_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; then
        if [ $VALID_CHECK == "yes" ]; then
            echo "$IP available."
        else
            echo "$IP not available!"
        fi
    else
        echo "$IP not available!"
    fi
}
# Example
check_ip 192.168.1.1
check_ip 256.1.1.1

博客地址:http://lizhenliang.blog.51cto.com

方法2:

function check_ip() {
    IP=$1
    if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        FIELD1=$(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 ]; then
            echo "$IP available."
        else
            echo "$IP not available!"
        fi
    else
        echo "$IP not available!"
    fi
}
# Example
check_ip 192.168.1.1
check_ip 256.1.1.1

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

function check_ip() {
    local IP=$1
    VALID_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; then
        if [ $VALID_CHECK == "yes" ]; then
         echo "$IP available!"
            return 0
        else
            echo "$IP not available!"
            return 1
        fi
    else
        echo "$IP not available!"
        return 1
    fi
}
while true; do
    read -p "Please enter IP: " IP
    check_ip $IP
    [ $? -eq 0 ] && break || continue
done
时间: 2024-10-14 00:54:18

Shell脚本判断IP是否合法性的相关文章

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

Shell脚本之IP网络地址和广播地址计算

这是一篇旧时习作,Shell脚本练得多了,想练练移位计算,就有了下面的脚本. #!/bin/bash IPPattern="(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" maskPattern="[1-9]|[12][0-9]|3[01]" while :

shell脚本--判断输入的ip是否正确

#!/bin/bash #It's written by caibingsen #!/bin/bash #It's written by caibingsen #date:2016-03-15 #while设置成死循环,在输入的ip不符合条件时,重新输入 while : do read -p "请输入要判断的ip地址:" ip #判断输入的ip地址是否仅由数字和点组成,并将值赋给m. #判断输入的ip地址的小数点的个数,复制给n m=`echo $ip |sed 's/[0-9.]//

shell脚本判断语句和循环语句

if判断语句 exit跳出判读语句 不加exit的结果 read -n(不换行) 判断是否输入的是数字 read age[[ $age =~ ^[0-9]+$ ]]if [ $? -ne 0 ]; then echo "你输入的不是一个数字" exit 1fi case判断语句 #!/bin/bashcat <<EOF########################################### 欢迎学习shell编程 #######################

Linux shell脚本 判断用户输入的文件类型

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 编写一个脚本,从键盘输入一个文件,判断它是否存在,如果存在就判断它是什么类型的文件:并用对应的颜色输出 脚本如下: #!/bin/bash #function:test file type

shell脚本判断执行用户

在脚本中,判断执行者是否为root. 判断方法1, #!/bin/bash if [ `whoami` != "root" ];then echo " only root can run me" exit 1 fi  判断方法2(但是用sudo执行回报脚本有语法错误,不知为何,有知道的高手请回复我). if [ $UID == 0 ];then echo "you are root" fi

shell脚本判断linux文件修改时间后执行操作

判断linux文件修改时间后执行操作 创建脚本 vi /var/tomcat/find.sh #!/bin/bash a=`stat -c %Y /var/tomcat/logs/catalina.out`  //获取文件的修改时间(秒为单位) b=`date +%s`       //获取当前系统的时间 (秒为单位) if [ $[ $b - $a ] -gt 1800 ];   //判断当前时间和文件修改时间差(30分钟) then /sbin/service tomcat restart

shell脚本判断设备节点是否存在

今天有个朋友问我如何判断一个设备节点是否存在,觉的很简单的问题,结果破费周折. 那个朋友首先发过来一个脚本说不行: #!/bin/sh echo "Find usb disk......." if [ -f /dev/sda1 ]; then echo "Runing mount > /udisk" else echo "Runing WLAN......" fi echo "Mount usb disk to /udisk Su

shell脚本判断里面的字符含义

[ -s FILE ] 如果 FILE 存在且大小不为0则为真. [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ -d FILE ] 如果 FILE 存在且是一个目录则为真. [ -e FILE ] 如果 FILE 存在则为真. [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真. [ -g FILE ] 如果 FILE 存在且