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 相关文章推荐
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
Python列表(list)常用操作方法小结
Feb 02 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python解惑之整数比较详解
Apr 24 Python
你真的了解Python的random模块吗?
Dec 12 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
用python实现刷点击率的示例代码
Feb 21 Python
python画微信表情符的实例代码
Oct 09 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
python3美化表格数据输出结果的实现代码
Apr 14 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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+dbfile开发小型留言本
2006/10/09 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python获取本机外网ip的方法
2015/04/15 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python中selenium库的基本使用详解
2020/07/31 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
元宵节主持词
2014/03/25 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
二年级学生评语大全
2014/04/23 职场文书
品德评语大全
2014/05/05 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
工程主管竞聘书
2015/09/15 职场文书
志愿服务心得体会
2016/01/15 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python