python利用wmi修改IP、DNS
2016-04-14 00:08
423 查看
python利用wmi修改IP、DNS
最近老是在加班室和宿舍之间来回切换,而两个地方的ip不一样,每换一次位置就要改一次ip,因为学校是用inode验证上网,虚拟机内部自动获取还好,直接重新连接一次就好了,但是主机很多时候无法获取到ip,那么就老是需要手动去固定,每次改的都烦了。报警了。然后想到干脆写个脚本自动设置ip,然后就有了这份代码,实验班的同志们可以直接下载下来使用了,跟着使用说明就可以使用了。软件的下载地址:http://download.csdn.net/detail/qq_19876131/9490452
使用说明文章最后有,然后资源的zip里面也有一份
其他的要改的话应该就改改代码中的ip就好了。
网上还有别的好多教程,但是那些源码总有些种种原因使用不了,真是报警了,调了好久终于算是改出来了,然后加了些交互方便使用,先贴一下代码吧:
要运行代码需要两个库
一个是pywin32(64位):http://download.csdn.net/download/oatnehc/6936037
一个是wmi,这个直接
pip install wmi就可以了
然后就可以运行这个代码了。
PS:如果要在cmd下运行这段代码,记得要用管理员权限的命令提示符哦!
# -*- coding: utf-8 -*- import wmi import random print '正在修改IP,请稍候...' wmiService = wmi.WMI() colNicConfigs = wmiService.Win32_NetworkAdapterConfiguration(IPEnabled = True) if len(colNicConfigs) < 1: print '没有找到可用的网络适配器' exit() print "-------------------------------------------------------\n" for i in xrange(len(colNicConfigs)): print str(i+1)+" : ",colNicConfigs[i].IPAddress print "-------------------------------------------------------\n" i=input("选择以太网卡:\n") objNicConfig = colNicConfigs[i-1] ''' print "-----------------------------------------" print objNicConfig.IPAddress print objNicConfig.IPSubnet print objNicConfig.DefaultIPGateway print objNicConfig.DNSServerSearchOrder print "-----------------------------------------" ''' i=input("---------------------------\n1、切换成宿舍(10.104.160.0)\n2、切换成加班室(10.104.161.0)\n---------------------------\n") if(i==1): j=160 else: j=161 ip_last=random.randint(1, 254) arrIPAddresses = ['10.104.'+str(j)+'.'+str(ip_last)] arrSubnetMasks = ['255.255.255.0'] arrDefaultGateways = ['10.104.'+str(j)+'.1'] arrGatewayCostMetrics = [1] arrDNSServers = ['114.114.114.114', '8.8.8.8'] intReboot = 0 returnValue = objNicConfig.EnableStatic(IPAddress = arrIPAddresses, SubnetMask =arrSubnetMasks) if returnValue[0] == 0 or returnValue[0] == 1: print '设置IP成功' intReboot += returnValue[0] else: print '修改失败: IP或子网掩码设置发生错误' #exit() returnValue = objNicConfig.SetGateways(DefaultIPGateway = arrDefaultGateways, GatewayCostMetric = arrGatewayCostMetrics) if returnValue[0] == 0 or returnValue[0] == 1: print '设置网关成功' intReboot += returnValue[0] else: print '修改失败: 网关设置发生错误' #exit() returnValue = objNicConfig.SetDNSServerSearchOrder(DNSServerSearchOrder = arrDNSServers) if returnValue[0] == 0 or returnValue[0] == 1: print '设置DNS成功' intReboot += returnValue[0] else: print str(returnValue)+'修改失败: DNS设置发生错误' #exit() ''' print "-----------------------------------------" print objNicConfig.IPAddress print objNicConfig.IPSubnet print objNicConfig.DefaultIPGateway print objNicConfig.DNSServerSearchOrder print "-----------------------------------------" ''' if intReboot > 0: print '需要重新启动计算机' print '修改结束'
大家想知道原理可以自己百度一下wmi修改windows配置,也是比较简单易懂了。
这里贴一下软件的使用说明吧:
打开有两个,一个简单的使用说明
然后直接运行change/dist目录下的可执行文件即可,注意要用管理员权限,
这里需要大家根据自己的电脑各个网卡判断出哪个是以太网卡,应该不难的
然后一步步跟着走就行了,改成宿舍或是加班室的ip自己选一下就行了。
这里如果出现运行一次之后还是上不了网的情况,那么就说明你所随机到的ip已经被人使用了,那就再运行一次就应该可以了。
相关文章推荐
- Python爬虫爬验证码实现功能详解
- 十个python程序小技巧
- python 爬虫试手 requests+BeautifulSoup
- python函数
- Python中os及os.path的相关方法
- Python命令Tab自动补全脚本
- Python学习路程day11
- Python简介
- python分析mysql-binlog,统计时间段内各表的操作次数_2016041302
- 几个Python中的基础算法
- 利用Python进行数据分析笔记(一
- python_发送邮件
- Python 爬验证码
- python集合(set)
- Python dict del
- 9.Python笔记之面向对象高级部分
- Python 中enumerate的使用
- Python你必须知道的十个库
- Python轻量级库web.py
- python 简单爬虫原理