使用VBS程序自动配置计算机IP地址(改进版)

来源:互联网 发布:雅思考试推荐用书 知乎 编辑:程序博客网 时间:2024/05/29 07:19
       虽然现在DHCP服务器已经无处不在了,但也有比较原始的地方,比如咱学院的实验室,每次抱着本本过去的时候,都要按照机房的IP地址配一遍,回教研室还要再把它改成自动获取IP,今天搞了个VBS程序自动搞定,比之前的版本增加了如果存在DHCP服务,就直接自动获取IP的功能。

     

       先说一下为什么需要这程序,如果没有它,要么我自己得手工配置IP,要么就直接设置为网卡的多IP地址,但由于我需要知道是哪个IP通的,以便用实验室教师机远程登录到本本上进行操作(因为还要用教师机上的电子教室),所以多IP似乎不可行。

       程序清单附后,在DBANK上有现成的VBS文件(http://dl.dbank.com/c004aa4bnf),建议想运行的童鞋,先用记事本打开来,看看大概程序有没有变化,我不保证DBANK帐号不被攻击哦。。。

     

        程序流程:遍历计算机上每一个网卡,先尝试自动获取IP,如果失败,则尝试程序最后的IP配置列表,注意从address开始,到end结束,每行依次为

       IP,子网掩码,网关,DNS1,DNS2

      每行的开头有单引号,以便让程序知道是注释的数据。最后程序会告诉你哪个IP通了,是不是自动获取的,还是所有IP都不通。

 

       程序现存BUG:1)由于测试通不通用的是PING服务,要保证网关上没有进行PING包过滤,对PING包无响应。否则通了程序都当没通。  2)有多个网卡时,只有一条路能通是肯定能行的,多条路同时能通,比如有线和无线连接同时能用时,我没测试。

 

      扩展思考:这个程序够我用了,但我觉得机房管理员还可以做扩展性思考。1)如果修改程序,给每个IP地址加上对应MAC地址,这样一个机房所有机子开机时运行同一脚本,就能根据自己的MAC配上自己的IP地址,相当于DHCP服务器中的客户端保留功能。  2)对于一些连IP地址都不会配的非专业小白老师,可以将学院所有实验室的使用IP列在列表中,以便任何教师下载该脚本,插上网线,运行就可以配置好自己的本本IP。

 

      最后CSDN上藏龙卧虎,班门弄斧欢迎拍砖,不过要拍轻点哦!

 

程序清单:

 

flag=false
call main

sub main()
msgbox "开始配置"
set fs =createobject("scripting.filesystemobject")
set ts=fs.opentextfile(wscript.scriptfullname,1,true)
do while ts.atendofstream<>true
   ls=ts.readline
   if ls="'address" then exit do
loop
i=1
do while ts.atendofstream<>true
   ls=ts.readline
   ls=right(ls,len(ls)-1)
   If ls="end" Then exit do
   redim preserve dz(i)
   dz(i)=ls
   i=i+1
loop
ts.close
set ts=nothing
set fs=nothing
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
         objNetAdapter.enabledhcp
         objNetAdapter.setdnsserversearchorder()
         wscript.sleep 4000
         Set colNetAdapters1 = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
         For Each objNetAdapter1 in colNetAdapters1 
            If  (IsArray(objNetAdapter1.DefaultIPGateway)=True) Then
              strDefaultIPGateway =Join(objNetAdapter1.DefaultIPGateway,",")
              Call pt(strDefaultIPGateway)
              if flag=true then
                For i = Lbound(objNetAdapter1.IPAddress) to Ubound(objNetAdapter1.IPAddress)
                  MSGBOX objNetAdapter1.IpAddress(i) & "能通了!是自动获取的IP"
                Next
                Set colNetAdapters1=nothing
                Set colNetAdapters=nothing
                Set objWMIService=nothing
                exit sub
              end if
            end if
         next
        Set colNetAdapters1=nothing
next
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
  for j=1 to i-1
   cs=split(dz(j),",") 
   strIPAddress = Array(cs(0))
   strSubnetMask = Array(cs(1))
   strGateway = Array(cs(2))
   strGatewayMetric = Array(1)
   arrDNSServerSearchOrder = Array(cs(3),cs(4))
   objNetAdapter.EnableStatic strIPAddress,strSubnetMask
   objNetAdapter.SetGateways strGateway, strGatewaymetric
   objNetAdapter.SetDNSServerSearchOrder arrDNSServerSearchOrder
   call pt(cs(2))
   if flag=true then
      msgbox cs(0) & "能通啦!"
      Set colNetAdapters=nothing
      Set objWMIService=nothing
      exit sub
   end if
 next
Next
Set colNetAdapters=nothing
Set objWMIService=nothing
msgbox "都不能通!"
end sub


sub pt(machine)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objPing = objWMIService.ExecQuery("select * from Win32_PingStatus where address ='" & machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
Else
  flag=true
End If
Next
Set objWMIService=nothing
end sub

 

'address
'10.22.22.50,255.255.255.0,10.22.22.254,192.168.0.1,192.168.1.1
'10.146.140.192,255.255.255.0,10.146.140.254,192.168.0.1,192.168.1.1
'10.146.140.251,255.255.255.0,10.146.140.254,192.168.0.1,192.168.1.1
'10.146.160.200,255.255.255.0,10.146.160.254,192.168.0.1,192.168.1.1
'10.145.252.47,255.255.255.128,10.145.252.126,192.168.0.1,192.168.1.1
'10.145.253.49,255.255.255.128,10.145.253.126,192.168.0.1,192.168.1.1
'10.22.22.189,255.255.255.0,10.22.22.254,192.168.0.1,192.168.1.1
'10.145.253.199,255.255.255.128,10.145.253.254,192.168.0.1,192.168.1.1
'10.145.252.99,255.255.255.128,10.145.252.126,192.168.0.1,192.168.1.1
'10.146.140.100,255,255,255.0,10.146.140.254,192.168.0.1,192.168.1.1
'10.146.130.252,255.255.255.0,10.146.130.254,192.168.0.1,192.168.1.1
'172.168.1.212,255.255.255.0,172.168.1.1,61.153.177.198,192.168.0.1
'end

原创粉丝点击