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批量下载图片的三种方法
Apr 22 Python
python动态加载变量示例分享
Feb 17 Python
Python中的迭代器漫谈
Feb 03 Python
python分析nignx访问日志脚本分享
Feb 26 Python
举例讲解Python中的算数运算符的用法
May 13 Python
Python单例模式实例详解
Mar 01 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
pip指定python位置安装软件包的方法
Jul 12 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
python实现手势识别的示例(入门)
Apr 15 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 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实现对站点内容外部链接的过滤方法
2014/09/10 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
vue 指定组件缓存实例详解
2018/04/01 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
浅谈python之新式类
2018/08/12 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
pymysql模块使用简介与示例
2020/11/17 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
数控专业大学生的自我鉴定
2013/11/13 职场文书
公积金单位接收函
2014/01/11 职场文书
产品质量承诺范本
2014/03/31 职场文书
终止合同协议书
2014/04/17 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
离婚起诉书范本
2015/05/18 职场文书
小爸爸观后感
2015/06/15 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers