2013-06-30 2 views
1

주어진 주소에 대한 서브넷 (네트워크 ID)의 시작 주소를 찾으려면 netaddr을 사용하고 싶습니다.netaddr 서브넷의 네트워크 ID

예 입력 : 192.168.1.130/26

예 출력 :하지만 특정 주소,

from netaddr import * 

ip = IPNetwork('192.168.1.130/26') 
subnets = list(ip.subnet(26)) 
print(subnets) 
[IPNetwork('192.168.1.128/26')] 

그것은 올바른 네트워크 ID를 보여줍니다 192.168.1.0 192.168.1.64 192.168.1.128 192.168.1.192

지금까지 나는이 코드를 사용하여 시도했다 모든 서브넷의 네트워크 ID가 아닙니다.

내가 어떻게 든 나에게이 경우 네 개의 네트워크 ID를 표시하려면이 코드를 변경할 수

가 미리 감사합니다 (어떤 IP/마스크와 함께 작동 할 수 있어야한다).

+0

/24 네트워크를 4/26 네트워크로 나누거나/26 네트워크를 4/28 서브넷으로 나누는 것을 의미합니까? – nos

답변

1
>>> from netaddr import * 
>>> 
>>> ip = IPNetwork('192.168.1.130/26') 
>>> supernet = ip.supernet(24)[0] 
>>> print list(supernet.subnet(26)) 
[IPNetwork('192.168.1.0/26'), IPNetwork('192.168.1.64/26'), IPNetwork('192.168.1.128/26'), IPNetwork('192.168.1.192/26')] 
+0

Omg ... SUPERNETTING, 서브넷이 아닙니다. 고맙습니다. – ivica

관련 문제