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 08 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
python pygame实现五子棋小游戏
Oct 26 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
python同时遍历两个list用法说明
May 02 Python
python import 上级目录的导入
Nov 03 Python
python tkinter实现定时关机
Apr 21 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
javascript 继承实现方法
2009/08/26 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
js仿360开机效果
2019/12/26 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Python创建xml的方法
2015/03/10 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
HTML5等待加载动画效果
2017/07/27 HTML / CSS
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
个人求职信范文分享
2013/12/13 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
2014年人大工作总结
2014/12/10 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
九年级语文教学反思
2016/03/03 职场文书