Python自動化運維之IPy模組

2021-10-25 01:41:12 字數 3457 閱讀 3883

ipy模組用於處理ipv4和ipv6位址和網路的類和工具。

環境

文章所示**在python3.8,windows10,centos7.8 下測試通過。

安裝

pip install ipy
基本使用

輸出指定網段的ip個數及ip清單

# 匯入ip模組

from ipy import ip

# 指定網段為127.0.0.0/30

ip = ip('127.0.0.0/30')

in [8]: for x in ip:

...:     print(x) # 列出該網段所有ip

...:

127.0.0.0

127.0.0.1

127.0.0.2

127.0.0.3

in [10]: ip.len() # 該網段ip個數

out[10]: 4

反向解析位址格式

in [12]: ip.reversenames()

out[12]:

['0.0.0.127.in-addr.arpa.',

'1.0.0.127.in-addr.arpa.',

'2.0.0.127.in-addr.arpa.',

'3.0.0.127.in-addr.arpa.']

​in [38]: ip.reversename()

out[38]: '0-3.0.0.127.in-addr.arpa.'

​in [35]: ip.netmask()

out[35]: ip('255.255.255.252')

​in [36]: ip.prefixlen()

out[36]: 30

​in [37]: ip.broadcast()

out[37]: ip('127.0.0.3')

ip位址型別

in [13]: ip.iptype()

out[13]: 'loopback'

ip轉換為整型格式

in [16]: ip('127.0.0.0').int()

out[16]: 2130706432

ip轉換為16進製制

in [17]: ip('127.0.0.0').strhex()

out[17]: '0x7f000000'

ip轉換為二進位制

in [18]: ip('127.0.0.0').strbin()

out[18]: '01111111000000000000000000000000'

16進製制止轉換為ip格式

in [19]: ip('0x7f000000')

out[19]: ip('127.0.0.0')

ip位址分類

in [21]: ip('127.0.0.0').version() #ipv4

out[21]: 4

​in [22]: ip('::1').version() # ipv6

out[22]: 6

ip與網路位址轉換

in [23]: ip('127.0.0.1/255.0.0.0', make_net=true)

out[23]: ip('127.0.0.0/8')

​in [24]: ip('127.0.0.1').make_net('255.0.0.0')

out[24]: ip('127.0.0.0/8')

​in [25]: ip('127.0.0.0-127.255.255.255')

out[25]: ip('127.0.0.0/8')

ip位址轉換為字串

in [26]:  ip('10.0.0.0/32').strnormal()

out[26]: '10.0.0.0'

​in [27]: ip('10.0.0.0/24').strnormal()

out[27]: '10.0.0.0/24'

​in [28]: ip('10.0.0.0/24').strnormal(0)

out[28]: '10.0.0.0'

​in [29]: ip('10.0.0.0/24').strnormal(1)

out[29]: '10.0.0.0/24'

​in [30]: ip('10.0.0.0/24').strnormal(2)

out[30]: '10.0.0.0/255.255.255.0'

​in [31]: ip('10.0.0.0/24').strnormal(3)

out[31]: '10.0.0.0-10.0.0.255'

wantprefixlen取值含義

wantprefixlen == 0 / none     don't return anything         1.2.3.0

wantprefixlen == 1           返回字首                       1.2.3.0/24

wantprefixlen == 2           返回網段/子網掩碼               1.2.3.0/255.255.255.0

wantprefixlen == 3           返回ip位址範圍                   1.2.3.0-1.2.3.255

多網路計算

# 判斷ip是否包含在另乙個網段中

in [32]: '192.168.1.1' in ip('192.168.1.0/24')

out[32]: true

# 判斷網段是否重疊,0表示不存在重疊,1表示存在重疊

in [33]: ip('192.168.1.0/24').overlaps('192.168.2.0')

out[33]: 0

# 子網合併

in [51]: ipset([ip('192.168.1.0/24'),ip('192.168.0.0/24')])

out[51]: ipset([ip('192.168.0.0/23')])linux就該這麼學

python自動化運維(IPy包)

from ipy import ip ip ip 192.168.20.0 24 print ip.len for x in ip print x from ipy import ip 反向解析,檢視位址型別 ip ip 192.168.1.20 print ip.reversenames prin...

python之自動化運維 Paramiko

使用開源的paramiko,我們就可以用python 中通過ssh協議對遠端伺服器執行操作,不需要手敲ssh命令,從而實現自動化運維。ssh是乙個協議,openssh是其中乙個開源實現,paramiko庫,實現了sshv2協議 底層使用cryptography 專案文件 點我跳轉 擴充套件 ssh協...

運維自動化

1,cobbler安裝環境準備 安裝epel epel release 6 8.noarch.rpm x86 64 epel release 6 8.noarch.rpm x86 安裝系列依賴環境 要是區域網用,建議關閉iptables 或是放行25151 80 69埠 和關閉selinux 檢視狀...