python获取网卡IP地址

285 篇文章 1 订阅
转自:http://blog.sina.com.cn/s/blog_896b31c701012x5a.html
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
 
import socket 
import fcntl 
import struct 
 
def get_ip_address(ifname): 
    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]) 
 
print "eth0 = "+ get_ip_address('eth0') 
print "lo = " + get_ip_address('lo')


如果返回没有的网卡会出错

Traceback (most recent call last):  File "getmac.py", line 17, in <module>    print "eth1 = "+ get_ip_address('eth1')   File "getmac.py", line 13, in get_ip_address    struct.pack('256s', ifname[:15]) IOError: [Errno 99] Cannot assign requested address

第二种方法:

利用命令:

ip=`ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'`
mac=`ifconfig | grep HWaddr | awk -F" " '{print $5}'`

import  os

tmptxt=" ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'"

IPTMP=os.popen(tmptxt).read()

IP=IPTMP.replace("\n","")


SIOCGIFHWADDR 和 0x8927是一个意思
/usr/include/linux/sockios.h 里有定义


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值