Мне нужно создать скрипт Python, который запрашивает сетевые интерфейсы и возвращает мне имя хоста, IP-адрес и адрес mac.Сканирование сетевого интерфейса Python
#!/usr/bin/env python3
import netifaces
x = netifaces.interfaces()
i = x[0]
for i in x:
if i != 'lo':
print(i)
face = netifaces.ifaddresses(i)
print(face)
i += i
else:
continue
Это одна из версий программы, с которой я работаю. Кажется, это захватывает все данные, которые мне нужны, но я не могу заставить их печатать чистыми или правильно! Я ищу что-то вроде: «Nic: wlan0, ipaddr: 10.0.0.1, mac: 4651168584541»
Я новичок в программировании и очень новичок в python, поэтому, пожалуйста, любая помощь приветствуется!
Что произойдет, если вы подключаетесь к протоколу, который не использует MAC-адреса, например. PPP или HDLC? Работает ли он с протоколами, использующими 64-разрядные MAC-адреса? Как насчет IPv6? –
Не уверен, что никогда не тестировал его в этих условиях. Я бы предположил, что IPv6 будет работать нормально. Это было домашнее задание, так что это было достаточно хорошо. Я бы предположил, что документы 'netifaces' могут охватывать это. Даже если протокол не использует mac addrs, он не должен иметь значения bc, интерфейс должен иметь одно право? – Joe
Только интерфейсы, использующие протоколы IEEE LAN, будут иметь MAC-адреса, а некоторые будут использовать 48-битные MAC-адреса, а некоторые будут использовать 64-разрядные MAC-адреса. Многие библиотеки допускают только 48-битные MAC-адреса, но более новые протоколы IEEE LAN используют 64-разрядные MAC-адреса.Если вы подключаетесь к интерфейсу, который не использует протоколы IEEE LAN, то MAC-адрес отсутствует. Не предполагайте, что все это ethernet или Wi-Fi. Я просто указывал, что принятие предположений, как это делают многие программисты в сетях, может привести к проблемам, ошибкам и дырам в безопасности. Я просто вижу так много программного обеспечения дерьма, выпущенного для сетей. –