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计算最大优先级队列实例
Dec 18 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
EM算法的python实现的方法步骤
Jan 02 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
Python包资源下载路径报404解决方案
Nov 05 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
php4的彩蛋
2006/10/09 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
纯javascript版日历控件
2016/11/24 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
django数据库自动重连的方法实例
2019/07/21 Python
python实现代码统计器
2019/09/19 Python
python实现简单飞行棋
2020/02/06 Python
python 实现字符串下标的输出功能
2020/02/13 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
python中如何使用虚拟环境
2020/10/14 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
如何清空Session
2015/02/23 面试题
探矿工程师自荐信
2014/01/24 职场文书
行政管理专业求职信
2014/07/06 职场文书
党员公开承诺书2015
2015/01/21 职场文书
毕业生个人自荐书
2015/03/05 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书