Hướng dẫn sử dụng module netifaces Python tìm thông tin địa chỉ IP trên OS

81

Đôi khi bạn thấy cực khó chịu khi không thể tìm ra cách đơn giản nhất để có được thông tin địa chỉ IP của card mạng trên OS từ Python. Nhưng đối với module netifaces bạn đã có ngay 1 cứu cánh đơn giản và hiệu quả để truy xuất thông tin địa chỉ IP và card interface trên OS. Vậy hãy cùng tìm hiểu xem module netifaces này có thể làm được gì nào ?

1. Cài đặt module netifaces

Cách 1:
– Download source module ‘netifaces‘ về cài.

Link download : https://pypi.python.org/pypi/netifaces#downloads

 
Cách 2:
– Cài đặt thông qua chương trình quản lý package ‘pip‘ của Python.

2. Hướng dẫn sử dụng module netifaces

Chúng ta sẽ demo trên console của python 2.7 (nếu bạn chưa cài thì xem qua bài Hướng dẫn cài đặt Python 2.7). Đầu tiên chúng ta cần import module netifaces để sử dụng module này nhằm xác định thông tin địa chỉ IP và card interface trên hệ thống.

2.1 Liệt kê các interface card trên hệ thống

Ta sử dụng method ‘interfaces()‘ của modules để liệt kê ra danh sách list chứa thông tin tên các card mạng interface.

 
Sau đó nếu ta cần xem chi tiết thông tin địa chỉ IP của 1 card interface ta sẽ thực hiện như dưới với method ‘ifaddress()‘.

 
Giờ ta phân tích tí xíu output trên khi rút gọn nó lại như sau :

 
2: đại diện cho giá trị ‘AF_INET‘, địa chỉ ipv4 bình thường.
17: đại diện cho giá trị ‘AF_LINK‘, thông tin lớp 2 layer link.
10: đại diện cho giá trị ‘AF_INET6‘ , địa chỉ ipv6.

Nhưng mà bạn đừng quan tâm các con số, vì nó có thể thay đổi khác nhau tuỳ theo các môi trường OS khác nhau (các số trên là thể hiện trên OS Linux). Vì vậy ta chỉ cần quan tâm giá trị tên đại diện của nó thay vì giá trị số để có thể lấy thông tin địa chỉ ip,… của từng loại cụ thể.

 
2.2 Xuất thông tin IP, MAC Address, Gateway

Vậy từ những chỉ dẫn phía trên chúng ta có thể truy xuất thông tin địa chỉ IP, MAC, Gateway,… trên từng ethernet cụ thể như sau.

 
– Thông tin MAC Address.

 
– Thông tin IP Gateway.

 
Note:
– Do giá trị trả về là 1 dictionary kiểu dữ liệu, nằm trong 1 list trả về nên để truy xuất từng phần tử cụ thể ta nên xài vòng lặp for để truy xuất các phần tử trong dictionary thuộc list.

3. Ví dụ code python

– Ví dụ code python , show thông tin địa chỉ IP liên quan đến card mạng.

 
Output :

 
Như vậy chúng ta hoàn tất việc tìm hiểu module netifaces để trích xuất thông tin địa chỉ IP và thông tin card mạng interface trên OS Linux rồi. Hy vọng các bạn thấy có ích.

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]

LEAVE A REPLY