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 相关文章推荐
在Django框架中编写Context处理器的方法
Jul 20 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
Python中logging实例讲解
Jan 17 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
python requests使用socks5的例子
Jul 25 Python
python 命令行传入参数实现解析
Aug 30 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
使用python+whoosh实现全文检索
Dec 09 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
python标准库ElementTree处理xml
May 20 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
jQuery实现轮播图效果
2019/11/26 jQuery
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python装饰器基础详解
2016/03/09 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python getopt模块使用实例解析
2019/12/18 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
离婚协议书格式
2015/01/26 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
小学音乐课教学反思
2016/02/18 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
frg-100简单操作(设置)说明
2022/04/05 无线电