Python kiểm tra kết nối với IP

Bạn có muốn tìm hiểu cách kiểm tra kết nối cổng TCP bằng Python không?

• Ubuntu 20
• Ubuntu 19
• Ubuntu 18
• Python 3. 8. 5

Danh sách thiết bị

Phần sau đây trình bày danh sách các thiết bị được sử dụng để tạo hướng dẫn này

  • Người phục vụ

  • Chuyển mạng

  • Máy tính xách tay

Với tư cách là Cộng tác viên của Amazon, tôi kiếm được tiền từ các giao dịch mua đủ điều kiện

Hướng dẫn liên quan - Python

Trên trang này, chúng tôi cung cấp quyền truy cập nhanh vào danh sách các hướng dẫn liên quan đến Python

  • Python - Cài đặt trên Windows

  • Python - Môi trường ảo trên Windows

  • Python - Môi trường ảo trên Linux

  • Python - CGI trên Apache

  • Python - CGI trên Nginx

  • Python - CGI trên IIS

Hướng dẫn Python - Kiểm tra kết nối cổng TCP

Kiểm tra kết nối với cổng TCP bằng Python

Sao chép vào clipboard

Đây là đầu ra lệnh

Sao chép vào clipboard

Xin chúc mừng. Bạn có thể kiểm tra kết nối cổng TCP bằng Python

Hướng dẫn Python - Kiểm tra kết nối cổng TCP bằng tập lệnh

Tạo một tệp văn bản chứa danh sách IP hoặc tên máy chủ

Sao chép vào clipboard

Tạo một tệp văn bản chứa các cổng TCP mong muốn

Sao chép vào clipboard

Kiểm tra khả năng kết nối với các cổng TCP bằng tập lệnh Python

Sao chép vào clipboard

Đây là đầu ra lệnh

Sao chép vào clipboard

Xin chúc mừng. Bạn có thể kiểm tra kết nối cổng TCP bằng tập lệnh Python

Tài liệu này nhằm mục đích cung cấp phần giới thiệu nhẹ nhàng về mô-đun

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0. Nó chủ yếu nhắm đến những người dùng chưa quen 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ó cái nhìn tổng quan về cách
>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 đại diện cho các khái niệm địa chỉ mạng IP

Tạo đối tượng Địa chỉ/Mạng/Giao diện¶

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 là một mô-đun để kiểm tra và thao tác với đị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
>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 để tạo đối tượng từ chuỗi và số nguyên

Lưu ý về 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 cần biết là 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. Quá trình chuyển đổi này diễn ra phần lớn là do phiên bản 4 của giao thức không cung cấp đủ địa chỉ để xử lý nhu cầu của toàn thế giới, đặc biệt là do số lượng thiết bị có kết nối trực tiếp với internet ngày càng tăng

Giải thích 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 của phần giới thiệu này, nhưng người đọc ít nhất cần biết rằng hai phiên bản này tồn tại và đôi khi sẽ cần thiết phải buộc sử dụng một hoặc một phiên bản.

Địa chỉ máy chủ IP¶

Địa chỉ, thường được gọi là "địa chỉ máy chủ" là đơn vị cơ bản nhất khi làm việc với địa chỉ IP. Cách đơn giản nhất để tạo địa chỉ là sử dụng chức năng nhà máy

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
4, tự động xác định xem nên tạo địa chỉ IPv4 hay IPv6 dựa trên giá trị được truyền vào

>>> 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ừ số nguyên. Các giá trị phù hợp với 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 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')

Định nghĩa mạng¶

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

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 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 đó. Dạng đơn giản nhất cho thông tin đó là cặp “địa chỉ mạng/tiền tố mạng”, trong đó tiền tố xác định số lượng bit đầu được so sánh để xác định địa chỉ có phải là một phần của mạng hay không và địa chỉ mạng xác định giá trị dự kiến ​​của

Đối với địa chỉ, chức năng xuất xưởng đượ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')

Các đối tượng mạng không được đặt bất kỳ bit máy chủ nào. Hiệu quả thực tế của điều này là

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
6 không mô tả mạng. Các định nghĩa như vậy được gọi là các đối tượng giao diện do ký hiệu ip-on-a-network thường được sử dụng để mô tả các giao diện mạng của máy tính trên một mạng nhất định và được mô tả thêm trong phần tiếp theo

Theo mặc định, cố gắng tạo một đối tượng mạng với các bit máy chủ được đặt sẽ dẫn đến việc tăng

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
7. Để yêu cầu các bit bổ sung thay vì bị cưỡng chế về 0, cờ
>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
8 có thể được chuyển đến hàm tạo

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
3

Mặc dù dạng chuỗi mang lại sự linh hoạt hơn đáng kể, nhưng mạng cũng có thể được xác định bằng 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 một địa chỉ duy nhất được xác định bởi số nguyên, vì vậy tiền tố mạng bao gồm toàn bộ địa chỉ mạng

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
4

Đối với các địa chỉ, việc tạo một loại mạng cụ thể có thể bị ép buộc bằng cách gọi trực tiếp hàm tạo của lớp thay vì sử dụng hàm xuất xưởng

Giao diện máy chủ¶

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ể, thì cả địa chỉ và lớp mạng đều không đủ. Ký hiệu như

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
6 thường được sử dụng bởi các kỹ sư mạng và những người viết công cụ cho tường lửa và bộ định tuyến để viết tắt cho “máy chủ
>>> 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')
0 trên mạng
>>> 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')
1”, Theo đó,
>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 cung cấp một tập hợp các lớp kết hợp liên kết một địa chỉ với một mạng cụ thể. Giao diện để tạo giống hệt với giao diện để 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à địa chỉ mạng

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
9

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

Kiểm tra Địa chỉ/Mạng/Đối tượng Giao diện¶

Bạn đã gặp rắc rối khi tạo một IPv(4. 6)(Địa chỉ. Mạng. Interface), vì vậy bạn có thể muốn lấy thông tin về nó.

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 cố gắng làm cho việc này trở nên dễ dàng và trực quan

Giải nén phiên bản IP

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
1

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

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
2

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

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
3

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

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
0

Lấy mặt nạ mạng (i. e. đặt các bit tương ứng với tiền tố mạng) hoặc mặt nạ máy chủ (bất kỳ bit nào không phải là một phần của mặt nạ mạng)

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
1

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

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
2

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

Mạng dưới dạng danh sách Địa chỉ¶

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

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
3

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

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
4

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

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
5

So sánh¶

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
0 cung cấp một số cách đơn giản, hy vọng là trực quan để so sánh các đối tượng, nơi nó có ý nghĩa

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
6

Một ngoại lệ

>>> 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')
5 được đưa ra nếu bạn cố gắng so sánh các đối tượng 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ư

>>> 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')
6) thường không chấp nhận trực tiếp các đối tượng từ mô-đun này. Thay vào đó, chúng phải được ép thành một số nguyên hoặc chuỗi mà mô-đun kia sẽ chấp nhận

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
7

Nhận thông tin chi tiết hơn khi quá trình tạo phiên bản không thành công¶

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

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
7 với thông báo lỗi chung chỉ đơn giản cho biết giá trị được truyền vào không được nhận dạng là một đối tượng thuộc loại đó. Việc thiếu một lỗi cụ thể là do cần phải biết liệu giá trị được coi là IPv4 hay IPv6 để cung cấp thêm chi tiết về lý do tại sao nó bị từ chối

Để hỗ trợ các trường hợp sử dụng hữu ích khi có quyền truy cập vào chi tiết bổ sung này, các hàm tạo lớp riêng lẻ thực sự nâng các lớp con

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
7
>>> 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')
9 và
>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
30 để 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 chi tiết hơn đáng kể khi sử dụng trực tiếp các hàm tạo của lớp. Ví dụ

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')
8

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

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')
7 làm lớp cha của chúng, vì vậy nếu bạn không quan tâm đến loại lỗi cụ thể, bạn vẫn có thể viết mã như sau

Làm cách nào để kiểm tra IP trong Python?

Cách lấy địa chỉ IP cục bộ bằng Python .
tên máy chủ = ổ cắm. tên máy chủ ()
local_ip = ổ cắm. gethostbyname(tên máy chủ)
in (local_ip)

Làm cách nào để kiểm tra kết nối mạng trong Python?

yêu cầu không kết nối(host='http. //Google. com'). cố gắng. urllib. yêu cầu. urlopen(máy chủ) #Python 3. x trả về Đúng ngoại trừ. return Sai # in thử( "đã kết nối" nếu kết nối() khác "không có internet. " )

Cách kiểm tra IP có ping hay không trong Python?

Nếu bạn không cần hỗ trợ Windows, đây là một cách thực sự ngắn gọn để làm điều đó. nhập tên máy chủ os = "google. com" #example phản hồi = os. system("ping -c 1 " + hostname) #và sau đó kiểm tra phản hồi. nếu phản hồi == 0. in tên máy chủ, 'đang hoạt động

Làm cách nào để ping địa chỉ IP trong Python?

Đảm bảo bạn đã cài đặt Python trên hệ thống máy tính của mình
Tạo một. tập tin py và hai. tập tin txt. Tệp Python sẽ chứa tập lệnh. Một tệp văn bản sẽ chứa danh sách các địa chỉ IP, các địa chỉ này sẽ được phân tách bằng dấu cách. Tệp văn bản khác sẽ được tập lệnh sử dụng để lưu đầu ra ping