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对象体系深入分析
Oct 28 Python
Python Property属性的2种用法
Jun 21 Python
Python科学画图代码分享
Nov 29 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
python 实现二维列表转置
Dec 02 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 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/11 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
python实现文件路径和url相互转换的方法
2015/07/06 Python
深入浅析python继承问题
2016/05/29 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
python变量的存储原理详解
2019/07/10 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
python如何建立全零数组
2020/07/19 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
德国苹果商店:MacTrade
2020/05/18 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
医药专业推荐信
2013/11/15 职场文书
品质标语大全
2014/06/21 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
先进工作者推荐材料
2014/12/23 职场文书
服务行业标语口号
2015/12/26 职场文书
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏