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验证码识别的方法
Jul 10 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
Python处理CSV与List的转换方法
Apr 19 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python装饰器详细介绍
Mar 25 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
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
python读写csv文件实例代码
2019/07/05 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
python 遍历pd.Series的index和value
2019/11/26 Python
基于python代码批量处理图片resize
2020/06/04 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
驻村工作先进事迹
2014/08/14 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
爱心捐助活动总结
2015/05/09 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
django 认证类配置实现
2021/11/11 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
netty 实现tomcat的示例代码
2022/06/05 Servers