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


Posted in Python onJanuary 12, 2018

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

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

代码如下:

#!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并自动断开宽带连接实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
低版本中Python除法运算小技巧
Apr 05 Python
Python的函数的一些高阶特性
Apr 27 Python
Django卸载之后重新安装的方法
Mar 15 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
Flask-Mail用法实例分析
Jul 21 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python标准库OS模块详解
Mar 10 Python
基于python和flask实现http接口过程解析
Jun 15 Python
python的launcher用法知识点总结
Aug 07 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 #Python
python opencv实现任意角度的透视变换实例代码
Jan 12 #Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 #Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 #Python
微信跳一跳python自动代码解读1.0
Jan 12 #Python
Tornado 多进程实现分析详解
Jan 12 #Python
快速了解Python相对导入
Jan 12 #Python
You might like
PHP微框架Dispatch简介
2014/06/12 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
代码详解javascript模块加载器
2018/03/04 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python流程控制常用工具详解
2020/02/24 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
python 实现控制鼠标键盘
2020/11/27 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
音乐系毕业生自荐信
2013/10/27 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
协议书样本
2014/04/23 职场文书
青年文明号口号
2014/06/17 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
财产分割协议书
2016/03/22 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
解决Redis启动警告问题
2022/02/24 Redis