Tập lệnh mạng con Python

Đây là một tập lệnh Python đơn giản và rất hữu ích dành cho quản trị viên mạng để giám sát các thiết bị trên mạng bằng cách ping mọi địa chỉ IP trên mạng con. Trên mạng sử dụng DHCP, tập lệnh này có thể được sử dụng để tìm ra địa chỉ IP nào được sử dụng và địa chỉ nào khả dụng. Tập lệnh này đã được thử nghiệm trên Python phiên bản 3. 4. 3 trên nền tảng Windows. Để chạy cái này trên nền tảng Linux/Unix, chỉ cần thay đổi các tham số cho lệnh ping

Phân tích chương trình

Bạn cần hai mô-đun Python - quy trình con và ipaddress. Mô-đun subprocess cho phép bạn sinh ra các quy trình mới mà bạn chạy lệnh ping trên đó. Mô-đun ipaddress được sử dụng để xác định mạng và lấy các địa chỉ IP khả dụng trên mạng đó

Lúc đầu, chương trình yêu cầu người dùng nhập địa chỉ mạng bằng định dạng ký hiệu CIDR [địa chỉ mạng/tiền tố]. Một mạng được xác định bằng cách sử dụng thông tin này và tất cả các địa chỉ IP khả dụng trong mạng đó được lấy dưới dạng danh sách

Các địa chỉ IP được đặt qua một vòng lặp và lệnh ping được thực thi bằng cách sử dụng hàm tạo popen của mô-đun subprocess. Đầu ra lệnh được phân tích cú pháp để kiểm tra xem nó có chứa bất kỳ chuỗi nào "Không thể truy cập máy chủ đích" hoặc "Đã hết thời gian yêu cầu" hay không và nếu tìm thấy, địa chỉ IP đó được đánh dấu là ngoại tuyến, ngược lại là trực tuyến

Lệnh ping trong mã này giới hạn số lượng yêu cầu tiếng vang là 1 bằng cách sử dụng công tắc -n. Nếu bạn muốn chạy chương trình trên nền Linux hoặc Unix thì thay -n bằng -c. Để làm cho chương trình chạy nhanh hơn, thời gian chờ cho phản hồi ping được đặt thành giá trị thấp là 500 mili giây

Hôm nay tôi muốn chia sẻ một công cụ nhỏ mà tôi thường xuyên sử dụng bất cứ khi nào tôi lập tài liệu về mạng của mình hoặc thực hiện lập kế hoạch mạng. Tôi là một kỹ sư có tinh thần làm việc theo nhóm nhưng bất cứ khi nào tôi muốn hoàn thành công việc một cách nhanh chóng, tôi sẽ làm một mình và phần lớn thời gian, công cụ cho phép tôi thực hiện các nhiệm vụ lập kế hoạch và lập tài liệu nhanh chóng là con trăn đơn giản này ứng dụng và nó đã khiến tôi trở nên lười biếng


[tín dụng. Hình ảnh chung sáng tạo. Creative Commons 3 - CC BY-SA 3. 0 giấy phép. Tác giả. Nick Youngson]

Mạng con là gì? . Vì vậy, đây là lời giải thích hợp lý của tôi. Chia mạng con là quá trình "sinh" địa chỉ IP mới bằng địa chỉ IP mẹ. Đó là định nghĩa của mạng con ở dạng cơ bản nhất. Trong thế giới mạng, một mình địa chỉ IP có thể có nghĩa là bất cứ điều gì hoặc tốt hơn nữa, vô nghĩa nhưng khi nó được kết hợp với mặt nạ mạng con, ý nghĩa của nó là hoàn chỉnh

Mặt nạ mạng con là gì? . Tất cả các địa chỉ IP thuộc về một mạng và trong mạng đó, một thông báo [phát sóng] dành cho tất cả các thành viên của mạng đó được gửi đến địa chỉ IP quảng bá, do đó, địa chỉ IP cũng quan trọng như mặt nạ mạng con của nó. Nếu bạn đã thấy một địa chỉ IP trong môi trường sản xuất, nó sẽ được viết chẳng hạn như 192. 168. 1. 24/1 hoặc 192. 168. 1. 1 255. 255. 255. 0. Hai đại diện có nghĩa giống nhau và hoàn toàn mô tả địa chỉ IP 192. 168. 1. 1

Mạng con đẳng cấp

Tất cả các hoạt động và tuyên bố về địa chỉ IP trong công việc này sẽ hoàn toàn đề cập đến IPv4 trừ khi có quy định khác

Địa chỉ IP được chia thành 5 lớp đó là địa chỉ IP lớp A, lớp B, lớp C, lớp D và lớp E. Địa chỉ lớp D được sử dụng để liên lạc chỉ dành cho một nhóm thiết bị, hình thức liên lạc này được gọi là phát đa hướng. Một ví dụ về địa chỉ IP lớp D là 224. 0. 0. 9 là địa chỉ chỉ được sử dụng bởi các thiết bị chạy một giao thức định tuyến cụ thể [Chính xác là giao thức thông tin định tuyến, RIP] để chia sẻ thông tin định tuyến. Lớp E là địa chỉ dành riêng cho mục đích nghiên cứu, do đó, trọng tâm của công việc này sẽ chỉ là địa chỉ lớp A đến C


[Phạm vi của các loại địa chỉ IP. tín dụng. Wikimedia. CC1. 0 giấy phép. Tác giả. Tăng vọt2005]

Phân loại mạng con đơn giản có nghĩa là xác định địa chỉ IP dựa trên mặt nạ mạng con mặc định của chúng. Địa chỉ IP lớp A có mặt nạ mạng con mặc định là 255. 0. 0. 0 hoặc /8. Địa chỉ IP lớp A nằm trong khoảng từ 1. 0. 0. 0 đến 126. 0. 0. 0. Đợi đã, "8" đến từ đâu? . 0. 0. 0, số này được chuyển đổi thành nhị phân sẽ cho tôi 11111111. 00000000. 00000000. 00000000. Nếu chúng ta đếm số lượng 1 ở dạng nhị phân, chúng ta sẽ nhận được 8, do đó /8 giống như 255. 0. 0. 0

Lớp B có subnet mask mặc định là 255. 255. 0. 0 hoặc /16. Lại nữa rồi, số 16 đến từ đâu? . 255. 0. 0 sẽ là 11111111. 11111111. 00000000. 00000000. Khi chúng ta đếm số 1 trong biểu diễn nhị phân, chúng ta sẽ nhận được 16. Các thiết bị của chúng tôi có bản chất là kỹ thuật số, vì vậy hãy thứ lỗi cho tôi nếu tôi sử dụng "nhị phân" để giải thích các khái niệm kỹ thuật số

Tôi chắc rằng tất cả chúng ta đã tìm ra mặt nạ mạng con lớp C mặc định. , OK chúng ta hãy làm điều đó với nhau. Mặt nạ mạng con lớp C mặc định là 255. 255. 255. 0 hoặc /24. Khi chúng tôi chuyển đổi số trên thành nhị phân, chúng tôi sẽ có 11111111. 11111111. 11111111. 00000000 chứa 24 số 1. Bây giờ bạn đã biết /24 được gắn vào địa chỉ IP mà bạn nhận được từ thiết bị phát sóng của mình ở đâu, do đó, điện thoại của bạn cũng là một máy chia mạng con

Octet

Tất cả các địa chỉ IP chứa ba dấu chấm [. ] và ít nhất bốn số bất kỳ từ số đó không còn là địa chỉ IP. Octets ở đây không có nghĩa là một nhóm tám nhạc sĩ mà là một đơn vị thông tin kỹ thuật số bao gồm tám bit. Trong biểu diễn mặt nạ mạng con ở dạng nhị phân tương ứng ở trên, tôi đã biểu thị 0 là 00000000, điều này là do đơn vị thông tin trong thế giới IP ở dạng 8 bit. do đó, số 1 có nghĩa là 00000001


[Tất cả các địa chỉ IP hợp lệ chứa bốn octet. tín dụng. Wikimedia. Bằng sáng chế. Tác giả. không xác định]

Tiêu đề con này mặc dù ngắn nhưng rất quan trọng vì tất cả các hoạt động chia mạng con đều được thực hiện dựa trên các octet. Một địa chỉ IP chứa bốn octet ví dụ 192. 168. 2. 1, "192" thuộc về octet đầu tiên, "168" thuộc về octet thứ hai, "2" thuộc về octet thứ ba trong khi "1" thuộc về octet thứ tư, áp dụng tương tự cho mọi địa chỉ IP

Tất cả các hoạt động mạng con được thực hiện trên mặt nạ mạng con không phải địa chỉ IP. Như đã nêu, địa chỉ IP có rất ít hoặc không có ý nghĩa gì nếu không có mặt nạ mạng con đi kèm. Với sự hiểu biết tốt về khái niệm mạng con, người ta có thể dễ dàng liệt kê tất cả các thành viên của một mạng nhất định chỉ bằng cách nhìn vào mặt nạ mạng con. Ví dụ: địa chỉ là 192. 168. 1. 1/24 có tối đa 253 người dùng giao tiếp bằng địa chỉ IP 192. 168. 1. 255 và địa chỉ mạng là 192. 168. 1. 1. Tôi sẽ giải thích khái niệm này ngay sau đây

Khi chúng tôi hiểu khái niệm về octet và như đã nêu, việc chia mạng con được thực hiện trên mặt nạ mạng con chứ không phải trên địa chỉ IP, điều đầu tiên cần làm là xác định octet quan tâm. Octet quan tâm là octet nhỏ nhất sau số 255. Do đó, một mặt nạ mạng con của giả sử 255. 255. 0. 0, octet quan tâm là octet thứ ba là "0". Xem xét mặt nạ mạng con, 255. 252. 0. 0, octet quan tâm là octet thứ hai, 252, vì nó là octet nhỏ nhất sau 255

Phân loại mạng con

Bạn có biết tên được đặt cho ký hiệu địa chỉ IP có dấu gạch chéo [/] không? . Bạn cũng biết mặt nạ mạng con, trong việc đưa ra ý nghĩa cho một địa chỉ IP cũng xác định số lượng người dùng mà một mạng có thể chứa


[Ký hiệu CIDR địa chỉ IP khác nhau và số người dùng tối đa mà địa chỉ đó có thể chứa [cột thứ hai]. tín dụng. Wikimedia. CC3. 0 giấy phép. Tác giả. Dario Lanza]

Mạng con không phân lớp là sự phân chia và xác định các địa chỉ IP không có mặt nạ mặc định của nó. Tôi đã nêu mặt nạ mạng con mặc định của tất cả các lớp địa chỉ IP [liên quan đến chúng tôi], do đó, một địa chỉ IP lớp A được chia mạng con có thể có mặt nạ mạng con lớp C

Việc chia mạng con có thể được thực hiện cho bất kỳ địa chỉ IP nào có thể là địa chỉ IP riêng tư hoặc công khai. Trên thực tế, khi bạn đến nhà cung cấp dịch vụ internet để yêu cầu kết nối và băng thông, việc cung cấp các dịch vụ đó cũng bao gồm việc cung cấp địa chỉ IP có thể sử dụng trên internet [địa chỉ IP công cộng] và họ muốn bạn biết số lượng địa chỉ IP khả dụng trong một mặt nạ mạng con duy nhất. mà họ sẽ cung cấp cho bạn. Một ISP cung cấp cho bạn một địa chỉ IP nói 208. 223. 1. 0/30 sẽ tự động nói "này, kết nối bạn yêu cầu là kết nối điểm-điểm và bạn chỉ được hưởng một địa chỉ IP và một mạng"

Chia mạng con có thể được thực hiện dựa trên hai tham số, đây là

  • Mạng con dựa trên số lượng máy chủ trên mỗi mạng và
  • Chia mạng con dựa trên số lượng mạng

Hãy làm một chút toán học

Chia mạng con dựa trên số lượng máy chủ hoặc người dùng trên mỗi mạng

Theo cách tiếp cận này, bạn quan tâm đến số lượng người dùng sẽ sử dụng mạng mà bạn sắp thiết kế và triển khai. Giả sử bạn muốn tạo một mạng có chứa 20 người dùng và bạn muốn xử lý họ bằng địa chỉ mạng là 192. 168. 1. 0. Làm cách nào để chia nhỏ địa chỉ mạng này thành 20 vị trí?

Người dùng trong mạng được chia thành các khối bất kể địa chỉ IP thuộc lớp nào. Các khối IP hợp lệ là 2,4, 16, 32, 64, 128 và 254. Do đó, nếu bạn muốn thiết kế một mạng có thể chứa 20 người dùng, khối IP gần nhất sẽ là 32 vì sử dụng 16 sẽ khiến 4 người dùng không có địa chỉ, do đó, thiết kế mạng có thể chứa 36 người dùng sẽ sử dụng khối IP là 64. Đây chỉ là cách nó diễn ra, khi các mạng này được tạo, bất kỳ yêu cầu nào bên ngoài mỗi phạm vi khối đều được coi là yêu cầu liên mạng và sẽ yêu cầu định tuyến, điều này cho thấy rằng việc chia mạng con hoàn toàn phân đoạn các địa chỉ mà nếu không sẽ được coi là một

Khi chia mạng con dựa trên số lượng máy chủ, ba bước cần thực hiện là

  • Xác định số lượng người dùng bạn muốn chiếm một mạng và chuyển đổi số này thành nhị phân
  • Dự trữ số lượng các bit này trong octet quan tâm trong mặt nạ mạng con
  • Lấy số gia và liệt kê các mạng

Ví dụ: chúng tôi muốn chia mạng con địa chỉ 192. 168. 1. 0/24 để chứa 20 người dùng trên mỗi mạng. Bước đầu tiên cần thực hiện là chuyển đổi 20 này thành nhị phân sẽ cho chúng ta 10100 là 5 bit. Bước tiếp theo là chuyển đổi mặt nạ mạng con [/24] thành nhị phân. Điều này rất đơn giản vì số 24 có nghĩa là 24 bit đầu tiên của sơ đồ số 32 bit là 1 giây. Điều này có nghĩa là mặt nạ mạng con là 11111111. 11111111. 11111111. 00000000 trong số thập phân có nghĩa là 255. 255. 255. 0

Octet quan tâm ở đây là octet cuối cùng và để dự trữ 5 bit trong ký hiệu nhị phân ở trên của mặt nạ mạng con có nghĩa là để lại năm số 0 đầu tiên và chuyển đổi mọi bit khác thành 1 giây, do đó mặt nạ mạng con mới sẽ là 11111111. 11111111. 11111111. 11100000

Để có được số gia tăng, hãy kiểm tra mạng con quan tâm mới. Ở đây, số gia tăng hai lần lên lũy thừa của vị trí "1" cuối cùng, trong trường hợp này là ở vị trí thứ 6, từ bên phải. Do đó, số gia là 26 = 32. Khi điều này được thực hiện, chúng tôi tiếp tục và liệt kê các địa chỉ IP có thể có trong phạm vi này

Địa chỉ mạng [số gia]Địa chỉ quảng bá192. 168. 1. 0192. 168. 1. 31192. 168. 1. 32192. 168. 1. 63192. 168. 1. 64192. 168. 1. 95192. 168. 1. 96192. 168. 1. 127192. 168. 1. 128192. 168. 1. 159192. 168. 1. 160192. 168. 1. 191192. 168. 1. 192192. 168. 1. 223192. 168. 1. 224192. 168. 1. 255192. 168. 1. 256 [không hợp lệ]_

Lưu ý trình tự tăng dần từ 0 đến 32 đến 64, v.v. Điều này ngụ ý rằng chúng tôi đã tạo 8 mạng khác nhau, mỗi mạng có khả năng chứa 32 người dùng mặc dù địa chỉ IP đầu tiên và cuối cùng được dành riêng cho ID mạng và địa chỉ quảng bá, do đó, các địa chỉ hợp lệ có thể được cấp cho mỗi người dùng trong mạng là 30. Ví dụ: trong mạng đầu tiên, người dùng hợp lệ là từ 192. 168. 1. 1 đến 192. 168. 1. 30, do đó, trong mạng cuối cùng, người dùng hợp lệ là từ 192. 168. 1. 225 đến 192. 168. 1. 254

Chia mạng con dựa trên số lượng mạng

Cách tiếp cận này không phổ biến nhưng để hoàn thiện, tôi sẽ giải thích khái niệm này. Cách tiếp cận ba bước được sử dụng ở trên vẫn được tính

  • Đầu tiên, xác định số lượng mạng mong muốn và chuyển đổi số này thành nhị phân
  • Dự trữ số bit từ thao tác trên và lấy số gia tăng
  • Cuối cùng, sử dụng số gia để liệt kê các mạng và phạm vi máy chủ

Ví dụ tôi có địa chỉ 206. 12. 6. 0/24 và tôi chỉ muốn tạo hai [2] mạng từ địa chỉ, có thể một cho tôi và ISP của tôi và một cho trang web từ xa của tôi. Điều đầu tiên cần làm là chuyển đổi hai số này thành nhị phân sẽ bằng 10 [hai bit]. Chuyển đổi mặt nạ mạng con, /24 [24 1s] thành nhị phân, chúng ta có 11111111. 11111111. 11111111. 00000000

Bước tiếp theo là dự trữ 2 bit trong mặt nạ mạng con nhị phân và để làm điều này, chúng tôi thay thế hai số 0 đầu tiên bằng 1 do đó chúng tôi có 11111111. 11111111. 11111111. 11000000. Vị trí của "1" cuối cùng trong nhị phân trên [xem octet cuối cùng là octet quan tâm] là thứ 7 và giá trị của "1" này ở vị trí như vậy là 27 = 128. Giá trị này là gia tăng của chúng tôi. Do đó, chúng tôi liệt kê các mạng mới là

Địa chỉ mạng [số gia]Địa chỉ quảng bá206. 12. 6. 0206. 12. 6. 127206. 12. 6. 128206. 12. 6. 255206. 12. 6. 256 [không hợp lệ]_

Như chúng tôi muốn, chúng tôi đã tạo hai mạng hợp lệ từ địa chỉ đã cho và các máy chủ hợp lệ trong mạng này là các giá trị giữa địa chỉ mạng [ID mạng] và địa chỉ quảng bá. Trong trường hợp này, các máy chủ hợp lệ cho mạng đầu tiên là 206. 12. 6. 1 đến 206. 12. 6. 126 trong khi các máy chủ hợp lệ cho mạng thứ hai là 206. 12. 6. 129 và 206. 12. 6. 254, do đó mỗi mạng được tạo có thể chứa tối đa 126 người dùng. Điều đáng nói là khi chúng tôi tạo ra nhiều mạng hơn, chúng tôi sẽ giảm số lượng người dùng

Chương trình

Để đạt được sự gọn gàng của mã ở một mức độ nhỏ, tôi đã chia mã thành ba mô-đun với mô-đun cuối cùng là chính chương trình, nhập ba mô-đun còn lại vào chương trình chính

mô-đun ipcheck

Để đảm bảo chương trình không gặp lỗi trong thời gian chạy, tôi đã quyết định cung cấp một mã mạnh mẽ để xác thực đầu vào địa chỉ IP từ người dùng. Địa chỉ IP hợp lệ là địa chỉ có bốn octet với octet đầu tiên nằm trong khoảng 1 và 223, octet thứ hai và thứ ba nằm trong khoảng 0 và 225, octet cuối cùng nằm trong khoảng 0 và 254 và không thuộc mẫu 169. 254. x. x là địa chỉ IP mặc định của windows trong trường hợp yêu cầu DHCP không thành công không phải là địa chỉ IP hợp lệ

def ipchecker[]:
    while True:
        ip=input['enter a valid ip address:\n']
        a=ip.split['.']
        try:
            if [ [len[a]==4] and [ 1

Chủ Đề