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


Posted in Python onApril 18, 2016

本文实例讲述了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实现dnspod自动更新dns解析的方法
Feb 14 Python
Python代码调试的几种方法总结
Apr 15 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
python 队列详解及实例代码
Oct 18 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
python的Jenkins接口调用方式
May 12 Python
Python加密技术之RSA加密解密的实现
Apr 08 Python
宝塔更新Python及Flask项目的部署
Apr 11 Python
Python实现递归遍历文件夹并删除文件
Apr 18 #Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 #Python
Python出现segfault错误解决方法
Apr 16 #Python
Python判断值是否在list或set中的性能对比分析
Apr 16 #Python
python中zip()方法应用实例分析
Apr 16 #Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 #Python
Python使用redis pool的一种单例实现方式
Apr 16 #Python
You might like
php在数组中查找指定值的方法
2015/03/17 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
jQuery事件详解
2017/02/23 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python常用模块用法分析
2014/09/08 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
简单了解python模块概念
2018/01/11 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
综合实践活动方案
2014/02/14 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
门面房租房协议书
2014/12/01 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL