linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名
1.通过模块netifaces获取,当系统为Windows时,可能会有报错现象
import os
import sys
try:
import netifaces
except ImportError:
try:
command_to_execute = "pip install netifaces || easy_install netifaces"
os.system(command_to_execute)
except OSError:
print "Can NOT install netifaces, Aborted!"
sys.exit(1)
import netifaces
routingGateway = netifaces.gateways()[‘default‘][netifaces.AF_INET][0]
routingNicName = netifaces.gateways()[‘default‘][netifaces.AF_INET][1]
for interface in netifaces.interfaces():
if interface == routingNicName:
# print netifaces.ifaddresses(interface)
routingNicMacAddr = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0][‘addr‘]
try:
routingIPAddr = netifaces.ifaddresses(interface)[netifaces.AF_INET][0][‘addr‘]
# TODO(Guodong Ding) Note: On Windows, netmask maybe give a wrong result in ‘netifaces‘ module.
routingIPNetmask = netifaces.ifaddresses(interface)[netifaces.AF_INET][0][‘netmask‘]
except KeyError:
pass
display_format = ‘%-30s %-20s‘
print display_format % ("Routing Gateway:", routingGateway)
print display_format % ("Routing NIC Name:", routingNicName)
print display_format % ("Routing NIC MAC Address:", routingNicMacAddr)
print display_format % ("Routing IP Address:", routingIPAddr)
print display_format % ("Routing IP Netmask:", routingIPNetmask)2.获取外网ip
!/usr/bin/env python
# 通过访问查询ip的网址,在响应页面正则获取ip地址,网站需要时常更新,在页面不能出现多个ip
import re,urllib2
class Get_public_ip:
def getip(self):
try:
myip = self.visit("http://www.bejson.com/httputil/queryip/")
except:
try:
myip = self.visit("https://www.8684.cn/ip")
except:
myip = "So sorry!!!"
return myip
def visit(self,url):
opener = urllib2.urlopen(url)
if url == opener.geturl():
str = opener.read()
return re.search(‘\d+\.\d+\.\d+\.\d+‘,str).group(0)
if __name__ == "__main__":
getmyip = Get_public_ip()
print getmyip.getip()3.在知道网卡时候可以很快获取局域网内的ip
import struct
import fcntl
import socket
def getip(ethname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0X8915, struct.pack(‘256s‘, ethname[:15]))[20:24])
if __name__ == ‘__main__‘:
print getip(‘enp3s0‘)
# enp3s0 是ifconfig后看出来的4.获取出的是127的,不太好,不明白应用场景
import socket #获取计算机名称 hostname=socket.gethostname() #获取本机IP ip=socket.gethostbyname(hostname) print(ip)
相关推荐
ationwork 2020-06-16
DavidChao 2020-01-15
Wytheme 2020-01-19
farwang 2008-07-31
tianshijianbing 2008-07-06
dzwcom 2016-12-28
huangzonggui 2019-10-27
huhui0 2008-11-12
leodengzx 2019-10-26
Vi 2019-09-28
MD0 2019-09-26
康源留言 2019-09-11
seaocean 2017-06-12
lsn0LSN 2013-05-04
龍大笔记 2012-08-28
sjpeter 2017-09-08
swift 2011-10-19