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
阅读(1500) | 评论(0) | 转发(0) |