当前位置:首页 > 主打产品 >

python实战系列之ip地址排序问题(02)

作者:曲靖市宁江木业有限公司 来源:www.ynnjmy.com 发布时间:2017-09-05 12:24:52

python实战系列之ip地址排序问题(02)

从openstack的nova list中获取了虚拟机的ip地址,但这些ip都没有排序和分组,为了进一步增强可读性,对ip地址执行排序操作,在shell下,可以通过sort命令,执行排序操作,具体操作如下:

[root@controller ~]# cat ip.txt | sort -t "." -k1,1n -k2,2n -k3,3n -k4,4n 10.1.104.75 10.1.104.87 10.1.104.149 10.1.104.151 10.1.105.1 10.1.105.7

上面的方式,可以实现ip地址的排序,如下通过python的方式,实现ip地址的排序,以携带文件的方式执行,先ip地址读入到一个列表中,通过列表的sort()方法,执行对ip地址的排序

2. 脚本内容

#!/usr/bin/env python #-*- coding:utf8 -*- ''' author:Happy from: Happy云实验室 欢迎交流 ''' import sys import os.path def ipsort(filepath="ip.txt"): ''' 定义一个函数,用于将ip地址排序, 默认的文件路径是当前目录下的ip.txt文件,返回排序后的ip地址列表 ''' try: ip = [] f = file(filepath,'r') fcontext = f.readlines() for ips in fcontext: ips = ips.strip() ip.append(ips) ip.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')]))) #排序 f.close() except Exception,msg: print "Error:%s" % (msg) sys.exit(1) return ip def main(): ''' 检查脚本携带参数的情况,必须携带一个参数——文件名,并检查文件名是否存在,调用排序的函数ipsort() ''' try: if len(sys.argv) != 2: print "Usage: %s %s" % (sys.argv[0],sys.argv[1]) else: if os.path.exists(sys.argv[1]): filename=sys.argv[1] else: print "%s is not exists!" % (sys.argv[1]) sys.exit(1) ip = ipsort(filename) #执行排序函数调用 for ips in ip: print ips except Exception,msg: print "\033[31mError: %s\033[0m" % (msg) if __name__ == "__main__": main()

说明: 运行方式为,脚本+参数的形式,如下为测试结果:

[root@controller ~]# /usr/local/sbin/ipsort.py /root/ip.txt 10.1.104.75 10.1.104.87 10.1.104.222 10.1.104.250 10.1.105.1 10.1.105.7

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页制作 http://www.feimao666.com

  • 上一篇:追寻点击愉悦感 提升网站平板体验的6个技巧
  • 下一篇:最后一页