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)

原文地址:https://www.cnblogs.com/liangsha0/p/12146598.html

时间: 2024-11-05 16:42:43

linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名的相关文章

python获取本机局域网IP地址(适用于Windows、Linux、Mac)

1 import socket 2 import platform 4 5 def getip(): 6 try: 7 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 8 s.connect(('www.baidu.com', 0)) 9 ip = s.getsockname()[0] 10 except: 11 ip = "x.x.x.x" 12 finally: 13 s.close() 14 return ip 15 16

用Python获取本机的IP地址

Linux import socketimport fcntlimport structdef 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', ifname[:15]) )[20:24]) #get_ip_add

Linux云主机获取本机公网IP地址

因为公司的云主机使用ifconfig和ip add命令都只能看到内网IP地址,而脚本里面又需要获取公网IP地址进行一些动作: # ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo     inet6 ::1/12

python基础项目实战:获取本机所有IP地址的方法

前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导入第三方库 查看主机名 主机IP 大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发.爬虫.django.数据挖掘等,零基础到项目实战的资料都有整理.送给每一位python的小伙

Python 获取本机IP地址

import socket #获取本机IP地址 self.local_ip = socket.gethostbyname(socket.gethostname()) print (self.local_ip) python 判断本机是否联网 1 timeout = 200 2 host = 'www.baidu.com' 3 port = 80 4 s=socket.socket() 5 s.settimeout(timeout) 6 status = s.connect_ex((host,po

Python获取网卡信息(名称、MAC、IP、网关等)

"人生苦短,我用Python".Python的高效有一部分是跟它丰富的模块分不开的.Python有很多第三方模块可以帮助我们完成一些事情,减少开发时间. Python pypi库中一个模块名字叫"netifaces",使用C语言写的一个第三方模块.可以: 1.获取本机的所有网关 2.获取本机所有的接口Interface(网卡NIC) 3.获取本机指定接口的详细信息,包括IP地址.子网掩码.广播地址.MAC地址等 不过遗憾的是这个模块的功能太有限以及会带出一些令人困惑

用Linux命令行获取本机外网IP地址

用Linux命令行获取本机外网IP地址 $ curl ifconfig.me$ curl icanhazip.com$ curl ident.me$ curl ipecho.net/plain$ curl whatismyip.akamai.com$ curl tnx.nl/ip$ curl myip.dnsomatic.com$ curl ip.appspot.com$ curl -s checkip.dyndns.org | sed 's/.*IP Address: \([0-9\.]*\)

【Win 10 应用开发】获取本机的IP地址

按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至于电话费嘛,基本上是交月租,通话费用可能平均不到1块钱,多的可能就几块钱.老周的单次通话时间一般不会长,长达半小时的通话也是偶然发生,多数情况下就说几句话而已,别说废话,长话短说,说完挂机. 有人会问,那如果要多聊一会儿呢,那就开聊天工具,聊语音.反正用的是光纤包年,多说几句废话也不花钱. 该省的钱

c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存. 首先需要引入命名空间: using System.Management; /// 操作系统的登录用户名: string GetUserName() { try { string st = ""; ManagementClass mc = new ManagementCla