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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
python中的装饰器详解
Apr 13 Python
Python通过select实现异步IO的方法
Jun 04 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
python实现简单socket通信的方法
Apr 19 Python
简单实现python进度条脚本
Dec 18 Python
Flask框架WTForm表单用法示例
Jul 20 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python 阶乘详解
Oct 05 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中几个常用的魔术常量
2012/02/23 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
Python做智能家居温湿度报警系统
2018/09/25 Python
Python assert语句的简单使用示例
2019/07/28 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
使用C#编写创建一个线程的代码
2013/01/22 面试题
化学相关工作求职信
2013/10/02 职场文书
大型活动策划方案
2014/01/12 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
PyTorch 如何自动计算梯度
2021/05/23 Python
MySQL触发器的使用
2021/05/24 MySQL