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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python 切片和range()用法说明
Mar 24 Python
python实现批量下载新浪博客的方法
Jun 15 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
详解Numpy中的广播原则/机制
Sep 20 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python能做什么 python的含义
Oct 12 Python
基于Django实现日志记录报错信息
Dec 17 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
Python日志处理模块logging用法解析
May 19 Python
如何快速理解python的垃圾回收机制
Sep 01 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python3.0 字典key排序
2008/12/24 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
基于Django用户认证系统详解
2018/02/21 Python
Python实现京东抢秒杀功能
2021/01/25 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
存储过程的优点有哪些
2012/09/27 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
网络书店创业计划书
2014/02/07 职场文书
亮化工程实施方案
2014/03/17 职场文书
何玥事迹观后感
2015/06/16 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Python包argparse模块常用方法
2021/06/04 Python