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进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
python xml解析实例详解
Nov 14 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
python的concat等多种用法详解
Nov 28 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
一个用js实现控制台控件的代码
2007/09/04 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python简单I/O操作示例
2019/03/18 Python
python开发游戏的前期准备
2019/05/05 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
运动会开幕式解说词
2014/02/05 职场文书
目标责任书格式范文
2015/05/11 职场文书
大学校园招聘会感想
2015/08/10 职场文书
校园运动会广播稿
2015/08/19 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang