Python实现获取当前公网ip并且自动断开宽带连接功能

来源:互联网 发布:mmd软件下载 编辑:程序博客网 时间:2024/04/28 23:49

今天写了一个获取当前公网ip并且自动断开宽带连接的文件,和大家分享下。

这个文件的具体用途大家懂的,可以尽管拿去用,不过目前只适用于Windows平台,我的Python版本是2.7的,win32ras模块需要下载pywin32。

代码如下:

#!coding: cp936import win32rasimport time,osdef Connect(dialname, account, passwd):    dial_params = (dialname, '', '', account, passwd, '')    return win32ras.Dial(None, None, dial_params, None)def DialBroadband():    dialname = '宽带连接'  #just a name    account = '********'    passwd = '****************'    try:        #handle is a pid, for disconnect or showipadrress, if connect success return 0.        #account is the username that your ISP supposed, passwd is the password.        handle, result = Connect(dialname, account, passwd)        if result == 0:            print "Connection success!"            return handle, result        else:            print "Connection failed, wait for 5 seconds and try again..."            time.sleep(5)            DialBroadband()        except:        print "Can't finish this connection, please check out."        returndef Disconnect(handle):    if handle != None:        try:            win32ras.HangUp(handle)            print "Disconnection success!"            return "success"        except:            print "Disconnection failed, wait for 5 seconds and try again..."            time.sleep(5)            Disconnect()    else:        print "Can't find the process!"        returndef Check_for_Broadband():    connections = []    connections = win32ras.EnumConnections()    if(len(connections) == 0):        print "The system is not running any broadband connection."        return    else:        print "The system is running %d broadband connection." % len(connections)        return connectionsdef ShowIpAddress(handle):    print win32ras.GetConnectStatus(handle)    data = os.popen("ipconfig","r").readlines()    have_ppp = 0    ip_str = None    for line in data:        if line.find("宽带连接")>=0:            have_ppp = 1        #if your system language is English, you should write like this:        #if have_ppp and line.strip().startswith("IP Address"):        #in othewords, replace the "IPv4 地址" to "IP Address"        if have_ppp and line.strip().startswith("IPv4 地址"):            ip_str = line.split(":")[1].strip()            have_ppp = 0            print ip_str#get my ipaddress anf disconnect broadband connection.def main():    data = Check_for_Broadband()    #if exist running broadband connection, disconnected it.    if data != None:        for p in data:            ShowIpAddress(p[0])            if(Disconnect(p[0]) == "success"):                print "%s has been disconnected." % p[1]            time.sleep(3)    else:        pid, res = DialBroadband()        ShowIpAddress(pid)        time.sleep(3)        Disconnect(pid)    return "finsh test"test = main()print test

基本的注释都有了,欢迎批评指点。

原创粉丝点击