from subprocess import Popen, PIPE
import re
defget_ip_ifconfig():
p = Popen(['ifconfig'], stdout = PIPE)
data = p.stdout.read().decode().split('\n\n')
data =[i for i in data if i andnot i.startswith('lo')]
dic ={}# re.M 多行模式,改变'^'和'$'的行为for line in data:
re_devname = re.compile(r'(\w+).*: flags=', re.M)
re_ipaddr = re.compile(r'inet ([\d\.]{7,15})', re.M)
devname = re_devname.search(line)
ip = re_ipaddr.search(line)if devname:
devname = devname.group(1)else:
devname =''if ip:
ip = ip.group(1)else:
ip =''
dic[devname]= ip
return dic['ens33']if __name__ =='__main__':print(get_ip_ifconfig())
连接外网时获取本机ip
import socket
defget_host_ip():
s =Nonetry:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))print(s.getsockname())
ip = s.getsockname()[0]finally:if s !=None: s.close()return ip
if __name__ =='__main__':print(get_host_ip())