網路相關的程式中,可能需要遍歷乙個網段的ip,例如:192.168.1.100 -192.168.2.200。第一反應會先到先遍歷1.100 - 1.255,再遍歷2.1-2.200,當然也是可行,本文要介紹的是效率更高的方案。1、ip簡介
目前常用ipv4的ip是32位的二進位制數,例如:00000001.00000001.00000001.00000001,而使用者直接使用二進位制數顯然是過於複雜,於是程式中通常使用10機制數或16機制數來操作。
2、那麼就可以把ip位址進行轉換:ip>二進位制數》整數。
def
ip2int
(ip)
: lis = ip.split(
'.')
return
int(
"%02x%02x%02x%02x"%(
int(lis[0]
),int(lis[1]
),int(lis[2]
),int(lis[3]
)),16
)"""
0.0.0.1 => 1
255.255.255.255 => 4294967295
192.168.1.100 => 3232235876
192.168.2.200 => 3232236232
192.168.1.255 => 3232236031
192.168.2.0 => 3232236032
"""
因此遍歷192.168.1.100 -192.168.2.200
網段,就只要遍歷3232235876 - 3232236232
,操作更為便利。
def
ip2int
(ip)
: lis = ip.split(
'.')
return
int(
"%02x%02x%02x%02x"%(
int(lis[0]
),int(lis[1]
),int(lis[2]
),int(lis[3]
)),16
)def
int2ip
(num)
: hexip =
str(
'%08x'
% num)
return
str(
"%i.%i.%i.%i"%(
int(hexip[0:
2],16
),int(hexip[2:
4],16
),int(hexip[4:
6],16
),int(hexip[6:
8],16
)))def
ip2hex
(ip)
: lis = ip.split(
'.')
return
str(
"%02x%02x%02x%02x"%(
int(lis[0]
),int(lis[1]
),int(lis[2]
),int(lis[3]
)))if __name__ ==
'__main__'
:# 遍歷網段所有的ip
res =
[int2ip(x)
for x in
range
(ip2int(
"192.168.1.100"
),ip2int(
"192.168.2.200")+
1)]for i in res:
print
(i)
ip網段變更
公司網路跟集團靠攏,先走第一步 ip網段變更。從xx網段切換到oo網段 1 準備工作 a 保證ipmi連線正常 b 獲得新ip並核對對應主機名 舊ip是否相符 2 確認網絡卡名稱 找到目前配置舊業務ip的活動網絡卡,如eth0,以各機器實際使用網絡卡為準,本文以eth0為例 ifconfig 3 修...
私有IP位址網段
根據用途和安全性級別的不同,ip位址可以大致分為兩類 公共位址和私有位址。公用位址在internet中使用,可以在internet中隨意訪問。私有位址只能在內部網路中使用,只有通過 伺服器才能與internet通訊。10.0.0.0 8 10.0.0.0 10.255.255.255 172.16....
python python掃瞄網段IP
首先知道自己的ip,然後構造這個網段內的ip,使用list來構建。使用前需要注意2.7中對dict和list的處理。list是沒有keys的 需要注意對ip的split操作來判斷,split後來判斷輸入的ip範圍,可以用掩碼的形式來進行範圍確認。傳入引數的處理,這個還不完善,需要對輸入的ip段和埠段...