当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 利用vbs自动修改ip的代码

VBScript
vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者
雷客图 站长安全助手 vbs版代码(asp 木马查找)
discuz 任意管理员密码漏洞利用工具 vbs代码
添加网站到安全站点.设置安全站点打开ActiveX时提示.去页眉页脚的vbs代码
文件夹定时自动备份 AutoBackUpFolder.vbs
iis PHP安装脚本 PHPInstall.vbs V3.1
HTA文件去除html控件认证和接收命令行参数
vbs 更改环境变量
excel2access vbs脚本
VBS 下载方法(CDO.MESSAGE)
vbs实现myipneighbors 域名查询结果整理
修改 Gateway和DNS的vbs脚本
VBS sendkeys 模拟击键操作 问题解决
用vbscript来添加ip策略 自动封IP
vbs,hta中选择文件夹对话框实现代码
WMI 脚本高手不完全手册
vbscript语句中“&H”专用于16进制数表示
URL 筛选小工具 提取网页中的链接地址
VBScript 文件操作代码小结
vbs 错误捕获器,用于捕获内部错误并进行手工处理

VBScript 中的 利用vbs自动修改ip的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 58 ::
收藏到网摘: n/a

单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情。我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下(DNS:61.134.1.4,掩码为:255.255.255.0):

机房

起始ip

ip终止ip

网关

机器名

工作组

1号 192.168.1.1 100 254 No_100~No_160 S01
2号 192.168.1.101 200 254 No_200~No_260 S02
3号 192.168.3.1 80 254 No_300~No_360 S03
4号 192.168.3.81 160 254 No_400~No_460 S04
5号 192.168.3.161 240 254 No_500~No_560 S05

以下为vbs源码:
1.xp系统(测试通过,用户为Administrator,文件为E:\fxp.vbs,启动组建立快捷方式fxp.lnk以便开机后自动运行一次)
复制代码 代码如下:

'/////主程序
dim msginf,machname'定义变量:对话框,机器名
msginf=msgbox("该程序只能执行1次,请在XP系统硬件安装完毕后执行!" &chr(13) & "是否继续?",65,"修改机器网络配置") '信息提示
if msginf=1 then ' 如果按确定,则
machname=inputon() ' 用函数inputon()分析
if machname<>"quit" then ' 如果返回值不等于"quit",则
wmitoip(machname) ' 运行函数wmitoip()设置机器信息
mreboot()'重启机器
end if
end if
'///重启机器
sub mreboot()
dim fso,f1,f2
Set fso = CreateObject("Scripting.FileSystemObject")
'删除启动组
if fso.fileexists("C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\fxp.lnk") then
set f1=fso.getfile("C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\fxp.lnk")
f1.delete
end if
'删除vbs文件
if fso.fileexists("e:\fxp.vbs") then
set f2=fso.getfile("e:\fxp.vbs")
f2.delete
end if
Set WshShell = Wscript.CreateObject("Wscript.Shell")
'WshShell.Run ("shutdown.exe -r -t 5") ' 重启
end sub
'///生成计算机名
function inputon() ' 函数inputon()
dim t ' 变量
while true ' 循环直到退出函数
t=inputbox("按一下规则输入:" & chr(13) & chr(13) & "第1位代表机房号" & chr(13) & "第2、3位代表机器号" & chr(13) & "教师机用00代表" & chr(13) & "如:123代表1号机房23号机" & chr(13) & "请确保输入正确!!","请输入3位机器标识!","") ' 输入机算机名,默认值为空
if t="" then ' 如果t等于空(按了取消键),则
inputon="quit" ' 返回值为"quit"
exit function ' 退出程序
end if
if len(t)=3 then ' 计算机号的长度为3位
if Cint(t)>=100 and Cint(t)<580 then ' 验证
inputon=t ' 返回需要的计算机名
exit function
end if
end if
wend
end function

'///修改机器ip、掩码、网关、工作组、机器名
sub wmitoip(t)
strComputer="."
strmask="255.255.255.0"
Dim lt,rt' 变量
dim ipv,gateway,lan 'ip,网关,工作组
lt=cint(left(t,1))'机号左1位数字值
rt=cint(right(t,2)) ' 机号右两位数字值
if lt=1 or lt=2 then'判断网关
gateway="192.168.1.254"
else
gateway="192.168.3.254"
end if
if lt=1 then '1号机房
lan="S01"
ipv="192.168.1."
if rt=0 then '教师机
ipv=ipv+"100"
else'学生机
ipv=ipv+Cstr(rt)
end if
end if
if lt=2 then '2号机房
lan="S02"
ipv="192.168.1."
if rt=0 then '教师机
ipv=ipv+"200"
else'学生机
rt=rt+100
ipv=ipv+Cstr(rt)
end if
end if
if lt=3 then '3号机房
lan="S03"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"80"
else'学生机
ipv=ipv+Cstr(rt)
end if
end if
if lt=4 then '4号机房
lan="S04"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"160"
else'学生机
rt=rt+80
ipv=ipv+Cstr(rt)
end if
end if
if lt=5 then '5号机房
lan="S05"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"240"
else'学生机
rt=rt+160
ipv=ipv+Cstr(rt)
end if
end if
Set objWMIService=GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters=objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress=Array(ipv)
strSubnetMask=Array(strmask)
strGateway = Array(gateway) '修改网关
'strGatewayMetric = Array(1) '跃点数
strDNS=Array("61.134.1.4")
For Each objNetAdapter in colNetAdapters
errEnable=objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)'ip,掩码
errGateways = objNetAdapter.SetGateways(strGateway) '网关
errDns=objNetAdapter.SetDNSServerSearchOrder(strDNS)'dns
Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
err = ObjComputer.Rename("No_" & t)'机器名
ReturnValue = objComputer.JoinDomainOrWorkGroup("S0" & left(t,1))'工作组
Next
end sub


2.98系统
98系统可以生成ip.reg注册表文件,导入后就可以了,源码如下(主体思路,这次没有98系统,所以未完成,可参考xp系统的改进):

复制代码 代码如下:

'/////主程序
dim msginf,machname'定义变量:对话框,机器名
msginf=msgbox("生成注册表文件,是否继续?",65,"getreg") '信息提示
if msginf=1 then ' 如果按确定,则
machname=inputon() ' 用函数inputon()分析
if machname<>"quit" then ' 如果返回值不等于"quit",则
setreg(machname) ' 运行函数setreg()生成注册表ip.reg
end if
end if
'///生成计算机名
function inputon() ' 函数inputon()
dim t ' 变量
while true ' 循环直到退出函数
t=inputbox("按一下规则输入:" & chr(13) & chr(13) & "第1位代表机房号" & chr(13) & "第2、3位代表机器号" & chr(13) & "教师机用00代表" & chr(13) & "如:123代表1号机房23号机" & chr(13) & "请确保输入正确!!","请输入3位机器标识!","") ' 输入机算机名,默认值为空
if t="" then ' 如果t等于空(按了取消键),则
inputon="quit" ' 返回值为"quit"
exit function ' 退出程序
end if
if len(t)=3 then ' 计算机号的长度为3位
if Cint(t)>=100 and Cint(t)<580 then ' 验证
inputon=t ' 返回需要的计算机名
exit function
end if
end if
wend
end function
'///生成注册文件
sub setreg(t) ' 生成注册表,t为机器号
Dim fso, f1,f2,lt,rt' 变量
dim ipv,gateway,lan 'ip,网关,工作组
lt=cint(left(t,1))'机号左1位数字值
rt=cint(right(t,2)) ' 机号右两位数字值
if lt=1 or lt=2 then'判断网关
gateway="192.168.1.254"
else
gateway="192.168.3.254"
end if
if lt=1 then '1号机房
lan="S01"
ipv="192.168.1."
if rt=0 then '教师机
ipv=ipv+"100"
else'学生机
ipv=ipv+Cstr(rt)
end if
end if
if lt=2 then '2号机房
lan="S02"
ipv="192.168.1."
if rt=0 then '教师机
ipv=ipv+"200"
else'学生机
rt=rt+100
ipv=ipv+Cstr(rt)
end if
end if
if lt=3 then '3号机房
lan="S03"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"80"
else'学生机
ipv=ipv+Cstr(rt)
end if
end if
if lt=4 then '4号机房
lan="S04"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"160"
else'学生机
rt=rt+80
ipv=ipv+Cstr(rt)
end if
end if
if lt=5 then '5号机房
lan="S05"
ipv="192.168.3."
if rt=0 then '教师机
ipv=ipv+"240"
else'学生机
rt=rt+160
ipv=ipv+Cstr(rt)
end if
end if

Set fso = CreateObject("Scripting.FileSystemObject")
if fso.fileexists("e:\ip.reg") then
set f2=fso.getfile("e:\ip.reg")
f2.delete
end if '如果存在ip.reg,先删了
set f1 = fso.CreateTextFile("e:\ip.reg", True) ' 建立文件ip.cfg
'f1.WriteLine("REGEDIT4") ' 以下为生成注册表
f1.WriteLine("Windows Registry Editor Version 5.00")
f1.WriteBlankLines(1)
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName]")
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机名
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]")
f1.WriteLine(chr(34) & "IPAddress" & chr(34) & "=" & chr(34) & ipv & chr(34)) ' IP
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]")
f1.WriteLine(chr(34) & "DefaultGateway" & chr(34) & "=" & chr(34) & gateway & chr(34)) ' 网关
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]")
f1.WriteLine(chr(34) & "IPMask" & chr(34) & "=" & chr(34) & "255.255.255.0" & chr(34)) ' 子网掩码
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]")
f1.WriteLine(chr(34) & "Comment" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机说明
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]")
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 计算机名
f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]")
f1.Writeline(chr(34) & "Workgroup" & chr(34) & "=" & chr(34) & lan & chr(34)) ' 工作组
end sub
"