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中使用pprint函数进行格式化输出的教程
Apr 07 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
用Python生成HTML表格的方法示例
Mar 06 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
微信小程序调用python模型
Apr 21 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
第十节--抽象方法和抽象类
2006/11/16 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
antd table按表格里的日期去排序操作
2020/11/17 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
python实现图片处理和特征提取详解
2017/11/13 Python
Python使用OpenCV进行标定
2018/05/08 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python判断有效的数独算法示例
2019/02/23 Python
Django框架安装方法图文详解
2019/11/04 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
C#的几个面试问题
2016/05/22 面试题
项目经理的岗位职责
2013/11/23 职场文书
电力工程合作意向书
2015/05/11 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电