socket.gethostbyname_ex(socket.gethostname())で、IPがとれない時の話。

たいした話ではないのですが^^;

まぁ大した話ではないのですが、

socket.gethostbyname_ex(socket.gethostname())

で、RaspberryPiくんが、るーぷばっくしか返してくれなくて^^;
ってことで、前回、『いかがわしい方法』を覚悟していたのですが、
まぁさすが、ライブラリのPythonと異名をとるだけのことはあって。

pip3 intall netifaces

から、、こんな関数をつくって、

def getIpListEx():
	AR = []
	for iface_name in netifaces.interfaces():
		iface_data = netifaces.ifaddresses(iface_name)
		dat = iface_data.get(netifaces.AF_INET)
		if dat != None:
			ip = dat[0]["addr"]
			if ip != "127.0.0.1":
				AR.append(ip)
	return	AR

こんな結果に。
Windowsにて。

getIpListEx: ['10.2.13.27', '192.168.12.100', '192.168.100.39']

RaspberryPi+M5STACKにて

途中のデータはどうなってる?

ちなみに、こんなコードを書いてやってみると、、

	def getIpListEx():
		AR = []
		for iface_name in netifaces.interfaces():
			print("------------------------------")
			print("iface_name:",iface_name)
			iface_data = netifaces.ifaddresses(iface_name)
			print("iface_data:",iface_data)
			dat = iface_data.get(netifaces.AF_INET)
			print("dat:",dat)
			if dat != None:
				ip = dat[0]["addr"]
				if ip != "127.0.0.1":
					AR.append(ip)
		return	AR

こんな結果でした。

------------------------------
iface_name: {FE6162ED-3E80-429D-BBE5-D50AE96B01E8}
iface_data: {-1000: [{'addr': 'bc:a8:a6:e2:27:01'}], 23: [{'addr': 'fe80::7f:7a7d:2fef:9222%25', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%25'}]}
dat: None
------------------------------
iface_name: {7D494D85-6416-448D-B7BF-5FC6B09E2D92}
iface_data: {-1000: [{'addr': '58:8a:5a:09:dd:a5'}], 23: [{'addr': 'fe80::8986:58c2:ffc5:931b%13', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%13'}], 2: [{'addr': '192.168.12.101', 'netmask': '255.255.255.0', 'broadcast': '192.168.12.255'}]}
dat: [{'addr': '192.168.12.101', 'netmask': '255.255.255.0', 'broadcast': '192.168.12.255'}]
------------------------------
iface_name: {08DA71E1-4547-4DEC-A9B9-51776697C1F7}
iface_data: {-1000: [{'addr': 'bc:a8:a6:e2:27:00'}], 23: [{'addr': 'fe80::fc6d:2ecf:bf60:553d%3', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%3'}], 2: [{'addr': '192.168.100.39', 'netmask': '255.255.255.0', 'broadcast': '192.168.100.255'}]}
dat: [{'addr': '192.168.100.39', 'netmask': '255.255.255.0', 'broadcast': '192.168.100.255'}]
------------------------------
iface_name: {4E353437-F2BD-43EC-A8EE-3AE44583FFB2}
iface_data: {-1000: [{'addr': 'bc:a8:a6:e2:27:04'}], 23: [{'addr': 'fe80::d1db:bf2f:2bd6:647d%8', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%8'}]}
dat: None
------------------------------
iface_name: {265B3F72-21DA-11E8-B611-806E6F6E6963}
iface_data: {-1000: [{'addr': ''}], 23: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'broadcast': '::1'}], 2: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'broadcast': '127.255.255.255'}]}
dat: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'broadcast': '127.255.255.255'}]

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です