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已经被人使用了,那就再运行一次就应该可以了。