python实现自动更换ip的方法


Posted in Python onMay 05, 2015

本文实例讲述了python实现自动更换ip的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/env python
#-*- encoding:gb2312 -*-
# Filename: IP.py
import sitecustomize
import _winreg
import ConfigParser
from ctypes import *
print '正在进行网络适配器检测,请稍候…'
print
netCfgInstanceID = None
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
r'System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}')
keyInfo = _winreg.QueryInfoKey(hkey)
# 寻找网卡对应的适配器名称 netCfgInstanceID
for index in range(keyInfo[0]):
hSubKeyName = _winreg.EnumKey(hkey, index)
hSubKey = _winreg.OpenKey(hkey, hSubKeyName)
try:
hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces')
lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange')
# 检查是否是以太网
if lowerRange[0] == 'ethernet':
driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0]
print '检测到网络适配器名:', driverDesc
netCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0]
print '检测到网络适配器ID:', netCfgInstanceID
if netCfgInstanceID == None:
print '没有找到网络适配器,程序退出'
exit()
break
_winreg.CloseKey(hNdiInfKey)
except WindowsError:
print r'Message: No Ndi\Interfaces Key'
# 循环结束,目前只提供修改一个网卡IP的功能
_winreg.CloseKey(hSubKey)
_winreg.CloseKey(hkey)
# 通过修改注册表设置IP
strKeyName = 'System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\' + netCfgInstanceID
print '网络适配器的注册表地址是:\n', strKeyName
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
strKeyName, \
0, \
_winreg.KEY_WRITE)
config = ConfigParser.ConfigParser()
print
print '正在打开IP.ini配置文件…'
config.readfp(open('IP.ini'))
IPAddress = config.get("school","IPAddress")
SubnetMask = config.get("school","SubnetMask")
GateWay = config.get("school","GateWay")
DNSServer1 = config.get("school","DNSServer1")
DNSServer2 = config.get("school","DNSServer2")
DNSServer = [DNSServer1,DNSServer2]
print '配置文件内设定的信息如下,请核对:'
print
print 'IP地址:', IPAddress
print '子关掩码:', SubnetMask
print '默认网关:', GateWay
print '主DNS服务器:', DNSServer1
print '次DNS服务器:', DNSServer2
print
res = raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:')
if str(res) == '1':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress])
_winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask])
_winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay])
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer))
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
elif str(res) == '2':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001)
_winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None)
_winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000)
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
else:
print '用户手动取消,程序退出'
exit('')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
Python实例之wxpython中Frame使用方法
Jun 09 Python
初学Python函数的笔记整理
Apr 07 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
python如何查看微信消息撤回
Nov 27 Python
详解python之heapq模块及排序操作
Apr 04 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
python实现将汉字转换成汉语拼音的库
May 05 #Python
python基于Tkinter库实现简单文本编辑器实例
May 05 #Python
python实现的简单窗口倒计时界面实例
May 05 #Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 #Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 #Python
You might like
php下的权限算法的实现
2007/04/28 PHP
php 什么是PEAR?
2009/03/19 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
ionic3 懒加载
2017/08/16 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python实现支付宝转账接口
2019/05/07 Python
Python如何调用外部系统命令
2019/08/07 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
材料物理专业个人求职信
2013/12/15 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
工伤事故证明
2014/10/20 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
大学生活感想
2015/08/10 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL