如何用shell判断ip是否合法

作者&投稿:钦度 (若有异议请与网页底部的电邮联系)
在shell中如何判断字符串是否为有效的IP地址~

CheckIPAddr()
{
echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
#IP地址必须为全数字
if [ $? -ne 0 ]
then
return 1
fi
ipaddr=$1
a=`echo $ipaddr|awk -F . '{print $1}'` #以"."分隔,取出每个列的值
b=`echo $ipaddr|awk -F . '{print $2}'`
c=`echo $ipaddr|awk -F . '{print $3}'`
d=`echo $ipaddr|awk -F . '{print $4}'`
for num in $a $b $c $d
do
if [ $num -gt 255 ] || [ $num -lt 0 ] #每个数值必须在0-255之间
then
return 1
fi
done
return 0
}
if [ $# -ne 1 ];then #判断传参数量
echo "Usage: $0 ipaddress."
exit
else
CheckIPAddr $1
fi

#! /bin/bash

function checkip {
for var in `echo $1 | awk -F. '{print $1, $2, $3, $4}'`
do
if [ $var -ge 1 -a $var -le 255 ]
then
continue
else
return 1
fi
done
}

echo -n 'Give me a IP address to check:'
read ip
checkip $ip
case $? in
0)
echo "Your input $ip is a valid IP address.";;
1)
echo "Your input $ip is invalid.";;
esac

#!/bin/bash
# Test an IP address for validity:
# Usage:
#      valid_ip IP_ADDRESS
#      if [[ $? -eq 0 ]]; then echo good; else echo bad; fi
#   OR
#      if valid_ip IP_ADDRESS; then echo good; else echo bad; fi
#
function valid_ip()
{
    local  ip=$1
    local  stat=1
    if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        OIFS=$IFS
        IFS='.'
        ip=($ip)
        IFS=$OIFS
        [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
            && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
        stat=$?
    fi
    return $stat
}
# If run directly, execute some tests.
if [[ "$(basename $0 .sh)" == 'valid_ip' ]]; then
    ips='
        4.2.2.2
        a.b.c.d
        192.168.1.1
        0.0.0.0
        255.255.255.255
        255.255.255.256
        192.168.0.1
        192.168.0
        1234.123.123.123
        '
    for ip in $ips
    do
        if valid_ip $ip; then stat='good'; else stat='bad'; fi
        printf "%-20s: %s
" "$ip" "$stat"
    done
fi

试试这个



#/bin/bash
echo -n "请输入IP地址 : "
read ip

ip1=`echo $ip|cut -d . -f 1`
ip2=`echo $ip|cut -d . -f 2`
ip3=`echo $ip|cut -d . -f 3`
ip4=`echo $ip|cut -d . -f 4`

a=`echo $ip|grep "\."`
if [[ -z "$ip1" ]];then
    echo "ip error"
    exit 8
fi

if [[ ! -z "$ip1" ]] && [ $ip1 -lt 255 ];then
    if [[ ! -z "$ip2" ]] && [ $ip2 -lt 255 ] ;then
        if [[ ! -z "$ip3" ]] && [ $ip3 -lt 255 ] ;then
            if [[ ! -z "$ip4" ]] && [ $ip4 -lt 255 ] && [ $ip4 -ne 0 ] && [ $ip4 -ne 255 ];then
                 echo "ip ok"
            else
                 echo "ip error"
            fi
        else
            echo "ip error"
        fi
    else
        echo "ip error"
    fi
else
    echo "ip error"
fi


虽然直接用正则表达式也可以,但是对于数字比较来说,正则不擅长。并且如果只写一个正则表达式,只能知道ip是否正确,不能得到具体错误信息






Shell命令有何特点?它对命令解释程序有何影响。
【答案】:(1)一条命令行中含有多个命令。如果在一条命令行中仅有一个命令,那么命令解释程序便可以利用简单的命令表找到该命令的命令处理程序。然而在Shell的一条命令行中,可能含有多个不同的命令,由于每一条命令对应了一个处理程序,故在对一个命令行进行解释后,应产生多个命令处理程序(进程)。(2...

LINUX下的shell是做什么的?有何用处?
各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com 档。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 command.com ,UNIX 下除了 Bourne shell(\/bin\/sh) 外还有 C shell(\/bin\/csh)、Korn shell(\/bin\/ksh)、Bourne again shell(\/bin...

Linux Shell 脚本编程最佳实践
执行一个程序时,无需知道其编写语言,且shell脚本并不要求具有扩展名,所以更倾向可执行文件没有扩展名。而库文件知道其编写语言十分重要,使用 .sh 作为特定语言后缀的扩展名,可以和其他语言编写的库文件加以区分。文件名要求全部小写, 可以包含下划线 _ 或连字符 - , 建议可执行文件使用连字符,库文...

bash shell是什么?
shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls 和 rm,也可以是购买的商业程序,比如 xv,或者是公用软件(public domain software),就象 ghostview。然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到...

怎样编写Linux shell script
1.交互式(Interactive):用户输入一条命令,Shell解释并执行一条。2.批处理(Batch):用户事先编写一个Shell脚本(Script),其中包含诸多命令,Shell会一次执行完所有命令。编译简单的脚本 Shell脚本的编写要使用到Vim文本编辑器,按照命令的执行顺序依次编写,每行写一条Linux命令。并且一个完整的Shell脚本则...

Linux高手请进,急急急!Linux脚本,与二进制程序的异同
改写方便。而二进制程序要改动只能改变源代码,重新编译。你可以理解成Shell脚本像C++那类的编程语言,二进制程序类似于.exe可执行文件就行了。不过shell和C++不一样。他首先是一种命令,他具有一定的编程功能,但并不能与编程语言想比。再次,他与DOS命令行很像,但是却比DOS命令行更强大。

linux shell 有关文件的读取
1)管道符后面的命令都是要新建shell去执行的,也就是说,while循环中的内容都不是在当前shell中执行,而array是在while循环中赋值的,所以当执行完while循环返回到当前shell后,array的值丢失。这一点必须清楚:新建shell可以继承当前shell的变量,相当于拷贝了变量的一个副本,而命令执行完退出新建shell后...

sap2000中面截面的Shell与Plane有何区别?面截面该如何选择?
楼上这个事结构计算软件,shell和plane单元的区别,其实都可能用,看你算的东西更接近那种。shell更好用点。平面有弯曲最好用shell。

请问shell编程里面EOT和EOF的问题。 <<EOT 内容 EOT <<EOF 内容 EOF...
无论EOT还是EOF,都只是一个标记,只要成对出现即可。你甚至可以自己指定,只要中间包含的内容不含此字符串就可以。这是shell中Here documents的用法,用于文本块的输入,搜索下就知道了。或者参见下面的链接。参考资料:http:\/\/linux.die.net\/abs-guide\/here-docs.html ...

shell编程。ubuntu下的shell出错,提示第4行function: not found,还有第...
在Ubuntu中使用shell脚本时,定义函数不用加 function关键字 !\/bin\/sh hello="var1"echo $hello func1() { #去掉function即可 local hello="var2"echo $hello } func1 echo $hello

松桃苗族自治县17542239827: 在shell中如何判断字符串是否为有效的IP地址 -
陀宏新德: CheckIPAddr() { echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null; #IP地址必须为全数字if [ $? -ne 0 ]thenreturn 1fiipaddr=$1a=`echo $ipaddr|awk -F . '{print $1}'` #以"."分隔,取出每个列的值b=`echo $ipaddr|awk -F ...

松桃苗族自治县17542239827: linux的shell编程如何实现IP地址合法验证 -
陀宏新德: if [ "$#" != "1" ]thenecho usage:checkip.sh 192.0.0.1exit 1fiANSWER=$(echo $1 | awk -F '.' '$1 = 0 && $2 = 0 && $3 = 0 && $4 = 0 {print 1}')#echo answer is $ANSWERif [ "$ANSWER" == "1" ]thenecho ok!elseecho no!fi #saveas checkip.sh then chmod +x checkip.sh

松桃苗族自治县17542239827: shell 用shell判断IP是否私有地址 -
陀宏新德: 可以通过正则表达式进行判断:#!/bin/bash ip='111.111.111.111'#ip='111.111.111.111' echo $ip | perl -ne 'exit 1 unless /\b(?:(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))\b/' if [ $? -eq 1 ] then echo "true" else echo "false" fi

松桃苗族自治县17542239827: Shell判断输入是否有效IP和字母 -
陀宏新德: #! /bin/bash function checkip { for var in `echo $1 | awk -F. '{print $1, $2, $3, $4}'` do if [ $var -ge 1 -a $var -le 255 ] then continue else return 1 fi done } echo -n 'Give me a IP address to check:' read ip checkip $ip case $? in 0) echo "Your input $ip ...

松桃苗族自治县17542239827: shell脚本判断ip是否能连通 -
陀宏新德: 脚本内容可以用ping +ip 判断就用if [ $? -eq 0 ]

松桃苗族自治县17542239827: IP地址合法性怎么判断 -
陀宏新德: 1. 有的时候,我们的电脑好像获取到了IP地址,但是却又不能上网.这时我们就有必要看看自己的电脑获取的IP地址到底是不是能用来上网的正确的IP地址了. 2.电脑、网络 3.首先,我们得先查看本机的IP地址.单击“显示/隐藏图标”小三角形...

松桃苗族自治县17542239827: 如何判断ip地址是否合法c#
陀宏新德: public bool IsCorrenctIP(string ip) { string pattrn=@"(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])"; if(System.Text.RegularExpressions.Regex.IsMatch(ip,pattrn)) { return true; //有效ip } else { return false; //无效 } }

松桃苗族自治县17542239827: 关于一个设置ip地址的linux脚本 -
陀宏新德: #!/bin/sh#menu2#Main menu script#ignore ctrl-c and QUIT interruptstrap "" 2 3 15#check ip addressfunction checkip (){for var in `echo $1 | awk -F. '{...

松桃苗族自治县17542239827: ip地址的合法性及子网判断 -
陀宏新德: 这个比较简单,根本不需要inet函数.命令行下传递三个参数,分别判断就行了,这个考的不是编码问题,是对网络的理解.可变长子网掩码(VLSM),掩码和IP按位与运算.点分十进制ip格式和数字的范围.... 如果还有什么不懂,Q我9740485

松桃苗族自治县17542239827: c#判断ip地址是否合法
陀宏新德: 判断IP地址是否合法,假设你的IP地址串为 ipString; System.Net.IPAddres myIPAddress = null; if(IPAddress.TryParse(ipString, out myIPAddress)) { //合法IP } else { //非法IP }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网