Python实现获取当前公网ip并且自动断开宽带连接功能
来源:互联网 发布:淘宝网高档丝巾 编辑:程序博客网 时间:2024/05/16 18:49
http://blog.csdn.net/jinmmd/article/details/6997381
今天写了一个获取当前公网ip并且自动断开宽带连接的文件,和大家分享下。
这个文件的具体用途大家懂的,可以尽管拿去用,不过目前只适用于Windows平台,我的Python版本是2.7的,win32ras模块需要下载pywin32。
代码如下:
-
- import win32ras
- import time,os
-
- def Connect(dialname, account, passwd):
- dial_params = (dialname, '', '', account, passwd, '')
- return win32ras.Dial(None, None, dial_params, None)
-
- def DialBroadband():
- dialname = '宽带连接'
- account = '********'
- passwd = '****************'
- try:
-
-
- 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."
- return
-
- def 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!"
- return
-
- def 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 connections
-
- def 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 have_ppp and line.strip().startswith("IPv4 地址"):
- ip_str = line.split(":")[1].strip()
- have_ppp = 0
- print ip_str
-
-
- def main():
- data = Check_for_Broadband()
-
- 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
基本的注释都有了,欢迎批评指点。
0 0