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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python中生成Epoch的方法
Apr 26 Python
Python文件和流(实例讲解)
Sep 12 Python
破解安装Pycharm的方法
Oct 19 Python
浅谈Python基础—判断和循环
Mar 22 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
Django中FilePathField字段的用法
May 21 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
python全栈开发语法总结
Nov 22 Python
pytorch--之halfTensor的使用详解
May 24 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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生成缩略图的代码
2011/01/12 PHP
PHP Directory 函数的详解
2013/03/07 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python多进程实现进程间通信实例
2017/11/24 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python实现银行实战系统
2020/02/26 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Django 解决由save方法引发的错误
2020/05/21 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
北京SQL新华信咨询
2016/09/30 面试题
女方回门宴答谢词
2014/01/14 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
艺术节开幕词
2015/01/28 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书