利用vbs自动修改ip的代码
程序员文章站
2022-06-16 20:33:44
单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情。我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下...
单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情。我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下(dns:61.134.1.4,掩码为:255.255.255.0):
以下为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
机房 |
起始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
上一篇: 黑客必须要知道的几个vbs文件代码
下一篇: mysql5 注入漏洞