在Linux上利用python获取本机ip

原创 2015年11月21日 20:04:46

下面介绍在Linux上利用python获取本机ip的方法.

经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码:

#!/usr/bin/env python
#encoding: utf-8
#description: get local ip address

import os
import socket, fcntl, struct

def get_ip():
    #注意外围使用双引号而非单引号,并且假设默认是第一个网卡,特殊环境请适当修改代码
    out = os.popen("ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}' | head -1").read()
    print out

#另一种方法, 只需要指定网卡接口, 我更倾向于这个方法
def get_ip2(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))[20:24])

if __name__ == '__main__':
    get_ip()
    print get_ip2('eth0')
    print get_ip2('lo')
下面是运行截图


参考文献

[1].http://bbs.csdn.net/topics/190130360

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

通过 python 获取本机IP地址

#!/usr/bin/pythonimport os import redef valid_ip(ip): if ("255" in ip) or ( ip == "127.0.0.1") o...

在 python 使用socket 获取 IP

使用socket获取更多的信息 getsocketname:获得本机的信息(IP和port) getpeername:获得远程机器的信息(IP和port) fileno:每一个socket对应一个fd...

python 获取本机计算机名和IP地址

1. >>>import socket >>>hostname = socket.gethostname() 'OOooo-PC' >>>ip = socket.gethostbyname(ho...

使用Python获取本机所有IP地址

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

【python】获取linux主机ip的一种方法

python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来...

Python中获取本机内网IP(Linux)

def get_local_ip(ifname = 'eth0'):       import socket, fcntl, struct   ...

Python获取本机IP、计算机名、mac地址

#_*_ coding:utf-8 _*_ import socket import getpass import platform import uuid     #通用唯一识别码 ...

Ubuntu 14.04 64bit上安装Scrapy

按照官方文档的说明,安装Scrapy 需要以下程序或者库: (1)Python 2.7 (2)lxml. Most linux distributions ships PRepackaged vers...

关于使用python logging模块的几点总结

关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志。Python日志系统非常丰富。添加结构化或非结构化日志输出到python代码,写...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)