Hướng dẫn how do you mask an ip address in python? - làm thế nào để bạn che một địa chỉ ip trong python?

Cho một địa chỉ IP trong ký hiệu Quad chấm chấm, ví dụ: 192.192.45.1 và chiều dài mặt nạ cho ví dụ 8, 16, 24 thông thường, nhưng có thể là bất cứ điều gì tức là 17.
192.192.45.1
And a mask length for example 8, 16, 24 typically, but could be anything i.e. 17.

Ai đó có thể vui lòng cung cấp mã trong Python để tính toán mặt nạ mạng con không? Tốt nhất là tôi có thể nhận được kết quả là số nguyên 32 bit để băm dễ dàng và sau đó diễn giải lại dưới dạng chấm chấm khi cần thiết để in. Tôi thấy rằng Python có một thư viện ổ cắm về cơ bản là một trình bao bọc xung quanh API ổ cắm UNIX. Tôi cũng thấy nó có chức năng inet_ntoa [], nhưng nó trả về một số loại cấu trúc gói. Tôi không quen thuộc với thư viện Python Struct, vì vậy tôi đã hy vọng một số người khác sẽ có một số ý tưởng. Cảm ơn!

SMCI

30.8K18 Huy hiệu vàng110 Huy hiệu bạc145 Huy hiệu đồng18 gold badges110 silver badges145 bronze badges

Khi được hỏi ngày 9 tháng 5 năm 2012 lúc 1:00May 9, 2012 at 1:00

Themaestrothemaestrothemaestro

13.1K20 Huy hiệu vàng54 Huy hiệu bạc75 Huy hiệu đồng20 gold badges54 silver badges75 bronze badges

Cách đơn giản nhất là sử dụng mô -đun iPaddr của Google. Tôi giả sử mặt nạ 25 bit bên dưới, nhưng như bạn nói, nó có thể là bất cứ điều gì

Cho Python2

>>> # Use ipaddr in python 2.x
>>> import ipaddr
>>> mask = ipaddr.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>

cho Python 3 ...

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>

Mô -đun này khá hiệu quả trong việc thao tác các địa chỉ IPv4 và IPv6 ... một mẫu của một số chức năng khác trong đó ...

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

Đã trả lời ngày 9 tháng 5 năm 2012 lúc 1:04May 9, 2012 at 1:04

Mike Penningtonmike PenningtonMike Pennington

41.2K19 Huy hiệu vàng134 Huy hiệu bạc172 Huy hiệu đồng19 gold badges134 silver badges172 bronze badges

2

Bạn có thể tính toán giá trị 32 bit của mặt nạ như thế này

[1> import socket, struct
>>> mask_length = 24
>>> mask = [1> socket.inet_ntoa[struct.pack[">L", mask]]
'255.255.255.0'

Đã trả lời ngày 9 tháng 5 năm 2012 lúc 1:29May 9, 2012 at 1:29

John La Rooyjohn La RooyJohn La Rooy

Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges

tác giả

Peter Moody

tác giả

Peter Moody

Nick Coghlan

Tổng quan

Tài liệu này nhằm mục đích giới thiệu nhẹ nhàng cho mô -đun
>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5. Nó chủ yếu nhắm vào người dùng rằng aren đã quen thuộc với thuật ngữ mạng IP, nhưng cũng có thể hữu ích cho các kỹ sư mạng muốn có một cái nhìn tổng quan về cách
>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 thể hiện các khái niệm giải quyết mạng IP.

Tạo địa chỉ/mạng/giao diện đối tượng

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 là một mô -đun để kiểm tra và thao tác các địa chỉ IP, điều đầu tiên bạn muốn làm là tạo một số đối tượng. Bạn có thể sử dụng
>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 để tạo các đối tượng từ chuỗi và số nguyên.

Một ghi chú trên các phiên bản IP

Đối với những độc giả không đặc biệt quen thuộc với địa chỉ IP, điều quan trọng là phải biết rằng Giao thức Internet [IP] hiện đang trong quá trình chuyển từ phiên bản 4 của giao thức sang phiên bản 6. Chuyển đổi này xảy ra phần lớn do phiên bản 4 của Giao thức không cung cấp đủ địa chỉ để xử lý các nhu cầu của toàn thế giới, đặc biệt là với số lượng thiết bị ngày càng tăng có kết nối trực tiếp với Internet.

Giải thích các chi tiết về sự khác biệt giữa hai phiên bản của giao thức nằm ngoài phạm vi giới thiệu này, nhưng ít nhất người đọc cần phải biết rằng hai phiên bản này tồn tại và đôi khi sẽ cần phải sử dụng một phiên bản hoặc khác.

Địa chỉ máy chủ IP

>>> ipaddress.ip_address['192.0.2.1']
IPv4Address['192.0.2.1']
>>> ipaddress.ip_address['2001:DB8::1']
IPv6Address['2001:db8::1']

Địa chỉ cũng có thể được tạo trực tiếp từ các số nguyên. Các giá trị sẽ phù hợp trong vòng 32 bit được coi là địa chỉ IPv4:

>>> ipaddress.ip_address[3221225985]
IPv4Address['192.0.2.1']
>>> ipaddress.ip_address[42540766411282592856903984951653826561]
IPv6Address['2001:db8::1']

Để buộc sử dụng địa chỉ IPv4 hoặc IPv6, các lớp có liên quan có thể được gọi trực tiếp. Điều này đặc biệt hữu ích để buộc tạo địa chỉ IPv6 cho các số nguyên nhỏ:

>>> ipaddress.ip_address[1]
IPv4Address['0.0.0.1']
>>> ipaddress.IPv4Address[1]
IPv4Address['0.0.0.1']
>>> ipaddress.IPv6Address[1]
IPv6Address['::1']

Xác định mạng

Địa chỉ máy chủ thường được nhóm lại với nhau thành các mạng IP, do đó

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 cung cấp một cách để tạo, kiểm tra và thao tác các định nghĩa mạng. Các đối tượng mạng IP được xây dựng từ các chuỗi xác định phạm vi địa chỉ máy chủ là một phần của mạng đó. Hình thức đơn giản nhất cho thông tin đó là cặp tiền tố/tiền tố mạng của mạng, trong đó tiền tố xác định số lượng bit hàng đầu được so sánh để xác định xem địa chỉ có phải là một phần của mạng và địa chỉ mạng xác định giá trị dự kiến ​​của những bit đó.

Đối với các địa chỉ, một chức năng nhà máy được cung cấp tự động xác định phiên bản IP chính xác:

>>> ipaddress.ip_network['192.0.2.0/24']
IPv4Network['192.0.2.0/24']
>>> ipaddress.ip_network['2001:db8::0/96']
IPv6Network['2001:db8::/96']

Đối tượng mạng không thể có bất kỳ bộ bit máy chủ. Hiệu ứng thực tế của điều này là

[1 ipaddress.ip_network['192.0.2.1/24', strict=False]
IPv4Network['192.0.2.0/24']

Mặc dù biểu mẫu chuỗi cung cấp tính linh hoạt hơn đáng kể, các mạng cũng có thể được xác định với các số nguyên, giống như địa chỉ máy chủ. Trong trường hợp này, mạng được coi là chỉ chứa địa chỉ duy nhất được xác định bởi số nguyên, do đó, tiền tố mạng bao gồm toàn bộ địa chỉ mạng:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
0

Như với các địa chỉ, việc tạo ra một loại mạng cụ thể có thể bị ép buộc bằng cách gọi trực tiếp cho hàm tạo lớp thay vì sử dụng chức năng nhà máy.

Giao diện máy chủ giao diện

Như đã đề cập ở trên, nếu bạn cần mô tả một địa chỉ trên một mạng cụ thể, cả địa chỉ và lớp mạng đều không đủ. Ký hiệu như

[1 mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 cung cấp một bộ các lớp lai liên kết địa chỉ với mạng cụ thể. Giao diện để tạo giống hệt với xác định các đối tượng mạng, ngoại trừ phần địa chỉ không bị ràng buộc là một địa chỉ mạng.

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
1

Đầu vào số nguyên được chấp nhận [như với các mạng] và việc sử dụng một phiên bản IP cụ thể có thể bị ép buộc bằng cách gọi trực tiếp cho hàm tạo có liên quan.

Kiểm tra địa chỉ/mạng/giao diện đối tượng

Bạn đã gặp rắc rối khi tạo đối tượng IPV [4 | 6] [địa chỉ | Mạng | Giao diện], vì vậy bạn có thể muốn có được thông tin về nó.

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 cố gắng làm cho việc này dễ dàng và trực quan.

Trích xuất phiên bản IP:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
2

Lấy mạng từ giao diện:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
3

Tìm hiểu có bao nhiêu địa chỉ riêng lẻ trong một mạng:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
4

Lặp lại thông qua các địa chỉ có thể sử dụng được trên mạng trên mạng:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
5

Có được netmask [nghĩa là đặt các bit tương ứng với tiền tố mạng] hoặc hostmask [bất kỳ bit nào không phải là một phần của netmask]:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
6

Bùng nổ hoặc nén địa chỉ:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
7

Mặc dù IPv4 không hỗ trợ vụ nổ hoặc nén, các đối tượng liên quan vẫn cung cấp các thuộc tính có liên quan để mã trung tính phiên bản có thể dễ dàng đảm bảo biểu mẫu ngắn gọn hoặc dài nhất được sử dụng cho địa chỉ IPv6 trong khi vẫn xử lý chính xác các địa chỉ IPv4.

Mạng như danh sách địa chỉ lor

Nó đôi khi hữu ích để coi các mạng như danh sách. Điều này có nghĩa là có thể lập chỉ mục chúng như thế này:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
8

Điều đó cũng có nghĩa là các đối tượng mạng cho vay sử dụng cú pháp kiểm tra thành viên danh sách như thế này:

>>> # Use ipaddress in python 3.x
>>> import ipaddress
>>> mask = ipaddress.IPv4Network['192.192.45.1/25']
>>> mask.netmask
IPv4Address['255.255.255.128']
>>>
9

Kiểm tra ngăn chặn được thực hiện hiệu quả dựa trên tiền tố mạng:

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

0

So sánh lor

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

5 cung cấp một số cách đơn giản, hy vọng trực quan để so sánh các đối tượng, nơi nó có ý nghĩa:

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

1

Một ngoại lệ

>>> import socket, struct
>>> mask_length = 24
>>> mask = [1> socket.inet_ntoa[struct.pack[">L", mask]]
'255.255.255.0'
0 được nêu ra nếu bạn cố gắng so sánh các đối tượng của các phiên bản khác nhau hoặc các loại khác nhau.

Sử dụng địa chỉ IP với các mô -đun khác

Các mô -đun khác sử dụng địa chỉ IP [chẳng hạn như

>>> import socket, struct
>>> mask_length = 24
>>> mask = [1> socket.inet_ntoa[struct.pack[">L", mask]]
'255.255.255.0'
1] thường trực tiếp nhận các đối tượng chấp nhận từ mô -đun này. Thay vào đó, chúng phải bị ép buộc với một số nguyên hoặc chuỗi mà mô -đun khác sẽ chấp nhận:

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

2

Nhận thêm chi tiết khi việc tạo ví dụ thất bại

Khi tạo các đối tượng địa chỉ/mạng/giao diện bằng các chức năng nhà máy không chính xác phiên bản, mọi lỗi sẽ được báo cáo là

[1> import socket, struct
>>> mask_length = 24
>>> mask = [1> socket.inet_ntoa[struct.pack[">L", mask]]
'255.255.255.0'
4 và
>>> import socket, struct
>>> mask_length = 24
>>> mask = [1> socket.inet_ntoa[struct.pack[">L", mask]]
'255.255.255.0'
5 để chỉ ra chính xác phần nào của định nghĩa không thể phân tích chính xác.

Các thông báo lỗi được chi tiết hơn đáng kể khi sử dụng trực tiếp các trình xây dựng lớp. Ví dụ:

>>> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

3

Tuy nhiên, cả hai trường hợp ngoại lệ cụ thể của mô -đun đều có

[1> ## Subnet number?
>>> mask.network
IPv4Address['192.192.45.0']
>>>
>>> ## RFC 1918 space?
>>> mask.is_private
False
>>>
>>  ## The subnet broadcast address
>>> mask.broadcast
IPv4Address['192.192.45.127']
>>> mask.iterhosts[]

4

Làm cách nào để làm cho IP của tôi ở Python?

Nhận địa chỉ IP Python..
Nhập ổ cắm ..
tên máy chủ = ổ cắm. gethostname [].
IPaddr = ổ cắm. gethostbyname [tên máy chủ].
in ["Tên máy tính của bạn là:" + tên máy chủ].
In ["Địa chỉ IP máy tính của bạn là:" + iPaddr].
#Làm thế nào để lấy địa chỉ IP của máy khách bằng ổ cắm ..

Làm cách nào để nhận mặt nạ IP?

Trong các trường tìm kiếm Windows, nhập CMD, để mở dấu nhắc lệnh ..
Nhấn Enter..
Nhập ipconfig/tất cả nhấn enter ..
Tìm cài đặt mạng của bạn ..
Địa chỉ IP của PC và mặt nạ mạng con mạng của bạn sẽ được liệt kê ..

Làm cách nào để ánh xạ một địa chỉ IP trong Python?

Theo dõi vị trí của một địa chỉ IP bằng Python và Geocoder..
PIP Cài đặt bộ định vị địa lý ..
Conda Install -c Conda -Forge Lococoder ..
Nhập bộ định vị địa lý ..
IP = Bộ định vị địa lý.IP ["161.185.160.93"].
IP = Bộ định vị địa lý.IP ["Tôi"].
In [IP. Thành phố].
'Newyork'.
In [ip. latlng].

Làm thế nào để bạn thao tác một địa chỉ IP trong Python?

Cách thao tác địa chỉ IP trong Python bằng mô -đun iPaddress..
Nhập iPaddress # Khởi tạo địa chỉ IPv4 IP = iPaddress.....
# In true nếu địa chỉ IP là in toàn cầu ["là toàn cầu:", ip. ....
Là toàn cầu: Sai là liên kết-local: Sai ..
# In địa chỉ IP tiếp theo [IP + 1] # Bản in địa chỉ IP trước [IP - 1].
192.168.1.2 192.168.1.0 ..

Bài Viết Liên Quan

Chủ Đề