Python获取linux主机ip的简单实现方法

 更新时间:2016年04月18日 10:27:35   作者:mo_guang  
这篇文章主要介绍了Python获取linux主机ip的简单实现方法,涉及Python使用socket模块调用shell命令的相关技巧,需要的朋友可以参考下

本文实例讲述了Python获取linux主机ip的简单实现方法。分享给大家供大家参考,具体如下:

python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来。所以加多了一个条件判断,如果发现以上方法获取ip抛异常时,那就用调起shell命令(ifconfig)和管道,把想要的ip给过滤出来。

import socket
import fcntl
import struct
"""
获取主机ip地址
参数ifname: 通过'lo'获取的为环回地址, 通过'eth0'获取的为主机ip地址
"""
def get_ip_address(ifname='eth0'):
  try:
    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])
  except:
    ips = os.popen("LANG=C ifconfig | grep \"inet addr\" | grep -v \"127.0.0.1\" | awk -F \":\" '{print $2}' | awk '{print $1}'").readlines()
    if len(ips) > 0:
      return ips[0]
  return ''

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • python安装cxOracle避坑总结不要直接pip install

    python安装cxOracle避坑总结不要直接pip install

    这篇文章主要为大家介绍了python安装cx_Oracle是遇到的一些问题的解决办法的总结,来帮大家避避坑有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步
    2021-10-10
  • Java多线程编程中ThreadLocal类的用法及深入

    Java多线程编程中ThreadLocal类的用法及深入

    这篇文章主要介绍了Java多线程编程中ThreadLocal类的用法及深入,尝试了自己实现一个ThreadLocal类以及对相关的线程安全问题进行讨论,需要的朋友可以参考下
    2016-06-06
  • Python利用魔法方法玩转对象

    Python利用魔法方法玩转对象

    Python中魔法方法(magic method)其实就是那些被双下划线包围的方法,这些魔法方法为类添加了**“魔力”,让我们可以在面向对象编程中用更加简洁的代码来操作对象,下面我们就来具体了解一下如何利用魔法方法玩转对象吧
    2023-12-12
  • Python Json读写操作之JsonPath用法详解

    Python Json读写操作之JsonPath用法详解

    JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java,这篇文章主要介绍了Python Json读写操作之JsonPath用法详解,需要的朋友可以参考下
    2023-04-04
  • Python实现日志实时监测的示例详解

    Python实现日志实时监测的示例详解

    观察者模式:是一种行为型设计模式。主要关注的是对象的责任,允许你定义一种订阅机制,可在对象事件发生时通知多个"观察"该对象的其他对象。本文将利用观察者模式实现日志实时监测,需要的可以参考一下
    2022-04-04
  • Python3常见函数range()用法详解

    Python3常见函数range()用法详解

    “range函数是一个用来创建算数级数序列的通用函数,这篇文章主要介绍了Python3常见函数range()用法,需要的朋友可以参考下
    2019-12-12
  • Python可视化Matplotlib散点图scatter()用法详解

    Python可视化Matplotlib散点图scatter()用法详解

    这篇文章主要介绍了Python可视化中Matplotlib散点图scatter()的用法详解,文中附含详细示例代码,有需要得朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python实现蒙特卡洛算法小实验过程详解

    Python实现蒙特卡洛算法小实验过程详解

    这篇文章主要介绍了Python实现基于蒙特卡洛算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python中线程threading.Thread的使用详解

    Python中线程threading.Thread的使用详解

    python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。本文将为大家详细介绍一下python中的线程threading.Thread()的使用,需要的可以参考一下
    2022-07-07
  • Django视图扩展类知识点详解

    Django视图扩展类知识点详解

    这篇文章主要介绍了Django视图扩展类知识点以及实例代码,需要的朋友们可以学习下。
    2019-10-10

最新评论