linux及windows下利用Python获取IP地点
当前位置:以往代写 > Python教程 >linux及windows下利用Python获取IP地点
2019-06-14

linux及windows下利用Python获取IP地点

linux及windows下利用Python获取IP地点

利用Python可以用很简朴的要领获得本机IP地点,不外在Windows和Linux下的要领稍有纷歧样的,下面就来具体先容下:

Windows下得到IP地点的要领

要领一 利用socket模块

利用拨号上网的话,一般都有一个当地ip和一个外网ip,利用python可以很容易的获得这两个ip 利用gethostbyname和gethostbyname_ex两个函数可以实现

#利用socket模块
import socket
#获得当地ip
localIP = socket.gethostbyname(socket.gethostname())
print"local ip:%s "%localIP
        
ipList = socket.gethostbyname_ex(socket.gethostname())for i in ipList:
    if i != localIP:
       print"external IP:%s"%i

可能

#引入socket模块
import socket
myname = socket.getfqdn(socket.gethostname())
myaddr = socket.gethostbyname(myname)

要领二 利用正则表达式和urllib2模块

该要领获取公网IP利用的是操作其他网站提供的IP检测成果,然后在利用python抓取页面,正则匹配或得。不外该要领较量精确哦

import re,urllib2
from subprocess import Popen, PIPE
       
print "本机的私网IP地点为:" + re.search('\d+\.\d+\.\d+\.\d+',Popen('ipconfig', stdout=PIPE).stdout.read()).group(0)
       
#操作其他网站提供的接口,利用urllib2获取个中的ip
print "本机的公网IP地点为:" + re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.ip138.com").read()).group(0)

Linux下得到IP地点的要领

上面的要领在Linux下也可以利用,除此之外,Linux下还可以用下面的要领获得本机IP地点。

import socket
import fcntl
import struct
     
def get_ip_address(ifname):
    skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print skt
    pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
    print pktString
    ipString  = socket.inet_ntoa(pktString[20:24])
    print ipString
    return ipString
     
print get_ip_address('lo')
print get_ip_address('etp')

    关键字:

在线提交作业