python自动化运维-基础篇之IPy

IPy模块

IPy提供了非常便捷的ip分配和规化能力,下载地址https://pypi.org/project/IPy/#description

ip地址网络的基本处理

>>> from IPy import IP
>>> ip = IP('192.168.1.0/24')  #IP类实例化
>>> ip.version()   #4:ipv4 6:ipv6
4
>>> ip.len() #ip地址个数。包括了网络地址和广播地址
256
>>> ip.iptype()
'PRIVATE'
>>> ip.int()
3232235776
>>> ip.reverseName()    
'1.168.192.in-addr.arpa.'
>>> ip.prefixlen()  #就是子网掩码的后缀
24
>>> ip.netmask()
IP('255.255.255.0')
>>> ip.strHex() #十六进制
'0xc0a80100'
>>> ip.strBin() #二进制
'11000000101010000000000100000000'
列出ip地址
for x in ip:
    print(x)
print(IP('10.8.1.0').make_net('255.255.255.0')) #10.8.1.0/24根据ip和子网掩码生成网络地址
print(IP('10.8.1.0/24').strNormal(0)) #10.8.1.0 根据wantprefixlen的参数来决定网络地址的形式
print(IP('10.8.1.0/24').strNormal(1)) #10.8.1.0/24
print(IP('10.8.1.0/24').strNormal(2)) #10.8.1.0/255.255.255.0
print(IP('10.8.1.0/24').strNormal(3)) #10.8.1.0-10.8.1.255

多网络计算

对网络地址的判断,是否叠加和包含

in 判断地址或网段的关系
>>> '192.168.1.121' in IP('192.168.1.0/24')
True
>>> IP('192.168.1.0/24') in IP('192.168.0.0/16')
True
判断是否叠加
>>> IP('192.168.1.0/24').overlaps('192.168.2.0/24')
0 #不叠加
>>> IP('192.168.0.0/23').overlaps('192.168.2.0/24')
0
>>> IP('192.168.0.0/23').overlaps('192.168.1.0/24')
1 #叠加

案列脚本

input_ip = input('请输入您的IP地址或网段:')
ips = IP(input_ip) #IP类实例化
if len(ips) > 1:
    print('ipv4/ipv6:ipv%s;网络地址:%s;子网掩码:%s;广播地址%s'%(ips.version(), ips.net(), ips.netmask(), ips.broadcast()))
    print('ipAddressNumbers:%s'%ips.len())
    print('revers:%s'%ips.reverseNames())
else:
    print('就是一个ipv%s地址:%s'%(ips.version(),ips.net()))
    print('iptype:%s'%ips.iptype())

print('16进制:%s;2进制:%s'%(ips.strHex(), ips.strBin()))
posted @ 2020-03-14 14:53  阳光下的小蚂蚱  阅读(438)  评论(0编辑  收藏  举报