先说一下为什么需要这程序,如果没有它,要么我自己得手工配置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