博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】获取主机ip的方式
阅读量:5874 次
发布时间:2019-06-19

本文共 957 字,大约阅读时间需要 3 分钟。

最近写后台业务逻辑,要用到获取本机ip地址的方法,记录两个python的实现方式:
  1. import socket
  2. import struct
  3. import fcntl
  4. import commands
  5. def getLocalIP():
  6.     status,output=commands.getstatusoutput("hostname -i")
  7.     if status :
  8.      return '127.0.0.1'
  9.     else :
  10.      return output
  11. def getip(ethname):
  12.     s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  13.     return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0X8915, struct.pack('256s', ethname[:15]))[20:24])
  14. if __name__=='__main__':
  15.    print "getip :" , getip('eth0')
  16.    print "getLocalIP :", getLocalIP()
注意 本案例中 我写的是 eth0 ,  如果是生产环境做了网卡绑定的话 需要使用 getip(bond0
)
执行结果
  1. [yangyidba@rac3 10:31:12 ~]
  2. $ python getip.py
  3. getip      : 10.10.15.12
  4. getLocalIP : 10.10.15.12
还有shell 的实现方式, 可以使用 以下shell 方式 替代python 实现中的  hostname -i :
  1. host `hostname --fqdn` 2>/dev/null | awk '{print $NF}'
  2. 10.10.15.12
  3. ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
  4. 10.10.15.12
  5. ifconfig|grep -v "127.0.0.1" | sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'
  6. 10.10.15.12

转载地址:http://vdenx.baihongyu.com/

你可能感兴趣的文章
递归法----整数划分问题
查看>>
CentOS 7 安装VirtualBox
查看>>
【转载】使用缓存的9个误区(上)
查看>>
6、宏定义与预处理、函数与函数库
查看>>
单例模式 代码以及祥解
查看>>
版本管理软件
查看>>
7、递归的二分查找
查看>>
发布过程5分钟内load飙升问题排查
查看>>
C程序编译链接问题
查看>>
hive(3)HiveQL数据定义
查看>>
PAT_A1003#Emergency
查看>>
Linux安全加固--系统相关
查看>>
UVA 12898 - And Or 与和或 (思路题)
查看>>
priority_queue 优先队列
查看>>
[SOJ] 无路可逃?
查看>>
最短路径Shortest Path algorithm
查看>>
什么是Web Server
查看>>
灭火救援设施(二)
查看>>
爬虫 requests 模块
查看>>
VS2012 安装出错 :通道正在关闭
查看>>