python和shell实现的校验IP地址合法性脚本分享


Posted in Python onOctober 23, 2014

一、python校验IP地址合法性

执行效果:

python和shell实现的校验IP地址合法性脚本分享

python代码:

 

[root@yang python]# vi check_ip.py

#!/usr/bin/python

import os,sys

def check_ip(ipaddr):

        import sys

        addr=ipaddr.strip().split('.')   #切割IP地址为一个列表

        #print addr

        if len(addr) != 4:   #切割后列表必须有4个参数

                print "check ip address failed!"

                sys.exit()

        for i in range(4):

                try:

                        addr[i]=int(addr[i])   #每个参数必须为数字,否则校验失败

                except:

                        print "check ip address failed!"

                        sys.exit()

                if addr[i]<=255 and addr[i]>=0:    #每个参数值必须在0-255之间

                        pass

                else:

                        print "check ip address failed!"

                        sys.exit()

                i+=1

        else:

                print "check ip address success!"

if  len(sys.argv)!=2:  #传参加本身长度必须为2

        print "Example: %s 10.0.0.1 "%sys.argv[0]

        sys.exit()

else:

        check_ip(sys.argv[1])   #满足条件调用校验IP函数

二、shell校验IP地址合法性

执行校果:
  返回值0校验合法,非0不合法。

python和shell实现的校验IP地址合法性脚本分享

shell代码:

[root@yang python]# vi check_ip.sh

#!/usr/bin/sh

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
Python 相关文章推荐
Python的装饰器模式与面向切面编程详解
Jun 21 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
django的登录注册系统的示例代码
May 14 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
python 读取文件并替换字段的实例
Jul 12 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
Python如何使用字符打印照片
Jan 03 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
python 实现图像快速替换某种颜色
Jun 04 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
Jun 18 Python
小结Python的反射机制
Sep 28 Python
探寻python多线程ctrl+c退出问题解决方案
Oct 23 #Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 #Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 #Python
使用Python开发windows GUI程序入门实例
Oct 23 #Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 #Python
python文件操作整理汇总
Oct 21 #Python
Python中input和raw_input的一点区别
Oct 21 #Python
You might like
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP中SESSION过期设置
2021/03/09 PHP
asp 的 分词实现代码
2007/05/24 Javascript
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
js实现日历与定时器
2017/02/22 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python多线程原理与用法实例剖析
2019/01/22 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python 内置函数汇总详解
2019/09/16 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
yy司仪主持词
2014/03/22 职场文书
南极大冒险观后感
2015/06/05 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
golang正则之命名分组方式
2021/04/25 Golang
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android