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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
python中返回矩阵的行列方法
Apr 04 Python
pandas的object对象转时间对象的方法
Apr 11 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
对Python 语音识别框架详解
Dec 24 Python
django创建简单的页面响应实例教程
Sep 06 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Python使用matplotlib绘制圆形代码实例
May 27 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
基于mysql的论坛(7)
2006/10/09 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
softmax及python实现过程解析
2019/09/30 Python
Python中zip函数如何使用
2020/06/04 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
大学生找工作推荐信范文
2013/11/28 职场文书
入党申请自荐书范文
2014/02/11 职场文书
2014学年自我鉴定
2014/02/23 职场文书
HR求职自荐信范文
2014/06/21 职场文书
防火标语大全
2014/10/06 职场文书
统计员岗位职责
2015/02/11 职场文书
八一建军节慰问信
2015/02/14 职场文书
工程进度款催款函
2015/06/24 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
安全教育培训制度
2015/08/06 职场文书
Golang gRPC HTTP协议转换示例
2022/06/16 Golang