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中返回字典键的值的values()方法使用
May 22 Python
Python实现将xml导入至excel
Nov 20 Python
python模拟事件触发机制详解
Jan 19 Python
python书籍信息爬虫实例
Mar 19 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
使用python 将图片复制到系统剪贴中
Dec 13 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
pytorch中index_select()的用法详解
Jan 06 Python
理解深度学习之深度学习简介
Apr 14 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
requireJS使用指南
2016/04/27 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
Python实现字符串格式化的方法小结
2017/02/20 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
社区志愿者培训方案
2014/06/10 职场文书
驾驶员安全责任书
2014/07/22 职场文书
煤矿安全协议书
2014/08/20 职场文书
2015年企业新年寄语
2014/12/08 职场文书
单位实习鉴定评语
2015/01/04 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers