Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367667
  • 博文数量: 243
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 2955
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-05 14:33
个人简介

漫漫长路,其修远兮!

文章分类

全部博文(243)

文章存档

2017年(2)

2016年(22)

2015年(32)

2014年(57)

2013年(107)

2012年(23)

分类: Python/Ruby

2014-10-08 14:44:22

inet_aton() -- convert IP addr string (123.45.67.89) to 32-bit packed format
inet_ntoa() -- convert 32-bit packed format IP to string (123.45.67.89)
1.socket.inet_aton('123.456.78.9')  //注意,此时返回的结果是32-bit packed binary format,是无法打印看到的。
2.struct.unpack('I', socket.inet_aton('123.456.78.9'))  //将返回值转换成可以打印的无符号整数。
3.socket.inet_ntoa(struct.pack('I',1497574779))  //先把无符号整形的数值转换成32-bit packed binary format,再进行inet_ntoa()操作。

def get_ip_address(ifname):
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    str=fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s', ifname[:15]))[20:24]
    print repr(str)
    return socket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s', ifname[:15]))[20:24])
    #return socket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s', ifname[:15]))[20:24])  
print get_ip_address('eth0')


输出的结果
'\xac\x10\xc9e'
172.16.201.101

获取IP的另外一种方式
ip_r=os.popen("/sbin/ifconfig | grep 'inet addr:' | awk -F: '{ print $2 }' | awk '{ print $1 }' | head -n1")
ip_1=ip_r.read().strip('\n')
print ip_1


阅读(1502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~