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 Queue模块详解
Nov 30 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
python实现一个简单的ping工具方法
Jan 31 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
python统计字符串中字母出现次数代码实例
Mar 02 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
详解python算法常用技巧与内置库
Oct 17 Python
教你怎么用python实现字符串转日期
May 24 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 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
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python ansible服务及剧本编写
2017/12/29 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
应届生法律求职信
2013/10/22 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
担保书怎么写
2014/04/01 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2015年财务部工作总结
2015/04/10 职场文书
农业项目投资意向书
2015/05/09 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
Python中22个万用公式的小结
2021/07/21 Python