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正则表达式实现截取成对括号的方法
Jan 06 Python
python得到windows自启动列表的方法
Oct 14 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
python爬虫可以爬什么
Jun 16 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
python将数据插入数据库的代码分享
Aug 16 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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提示Failed to write session data错误的解决方法
2014/12/17 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP反射学习入门示例
2019/06/14 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Django配置跨域并开发测试接口
2020/11/04 Python
python中round函数保留两位小数的方法
2020/12/04 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
2014超市双十一活动策划方案
2014/09/29 职场文书
护理专业自荐信范文
2015/03/06 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
浅谈react useEffect闭包的坑
2021/06/08 Javascript