Python获取当前公网ip并自动断开宽带连接实例代码

时间:2022-03-06 09:57:34

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

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

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!coding: cp936
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 = '宽带连接' #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."
    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 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

基本的注释都有,大家可以自己参考。

总结

以上就是本文关于Python获取当前公网ip并自动断开宽带连接实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

原文链接:http://blog.csdn.net/mingzznet/article/details/52887470