Узнать внутренний IP адрес на python (Linux версия)
Скрипт на python 3 позволяющий определить IP адрес подключенного устройства на Linux во внутренней сети. Используются штатные библиотеки через socket. Для работы в windows требуется модификация скрипта.
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', bytes(ifname[:15], 'utf-8'))
)[20:24])
#print( get_ip_address('eth0' )) # '192.168.0.110'
try:
print( "Кабель eth0: ", get_ip_address('eth0' ))
except:
pass
try:
print( "WiFi wlan0: ", get_ip_address('wlan0' ))
except:
pass
В случае нескольких сетевых карт необходимо или изменить номер на нужный или использовать проход по массиву