zoukankan      html  css  js  c++  java
  • ghost后无需人工干预,全自动修改IP等设置

    不再神秘,PXE网络克隆图文详细教程-天下网盟版
    http://www.maicode.net/Article/wbsystem/200607/10321.html


    【导读】网吧有近300台,每次 ghost后再改IP之类的,想想就头晕,于是写了个VBS,几个BAT,使机器克隆后能自动修改IP、标识、网关,工作组、CS-CDKEY、美萍的机号和注册号,就是说:ghost 后基本不用改配置,直接能用。

     

    网吧ghost 无非以下几种:

     

    1、单机克隆,文件到分区:

    简单、快速,推荐使用。一个系统备份也就300~400兆,不占多少硬盘空间,一旦系统有问题恢复容易。

     

    2、单机克隆,分区到分区(不开机箱):

    从服务器复制系统备份然后克隆,用于系统更新。优点:想克哪台克哪台,不受顾客上机限制,不拖网速。

     

    3、单机克隆,分区到分区(开机箱):

    从母盘克隆系统,一般用于系统更新,要开机箱,不推荐。

     

    4、单机克隆,DISK TO DISK

    你不觉得累吗?

     

    5、多机克隆,文件到分区:

    批量更新系统,好处多多,就是改IP有点烦,哦!

     

    6、多机克隆,盘到盘:

     

    不管是哪种克隆,思想差不多,就是在非系统盘(如e:\ghostbak\)放以下几个文件:

     

    1、系统的ghost备份(如win98.gho),如果有不同的机器配置也放在一起(如win98A.ghowin98B.ghowin98C.gho

     

    2ip.regIP、标识、网关,工作组、CS-CDKEY、美萍机号和注册号的注册表文件。下面介绍。

     

    3st.bat:用于第12种情况。下面介绍。

     

    4ghost.exe:少了它什么也不能干!

     

    ip.reg内容:

     

    REGEDIT4

     

    ;计算机名(如zx001,zx123

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName]

     

    "ComputerName"="zx203"

     

    ;IP

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]

     

    "IPAddress"="192.168.0.203"

     

    ;网关:

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]

     

    "DefaultGateway"="192.168.0.15"

     

    ;计算机说明:

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

     

    "Comment"="zx203"

     

    ;计算机名:

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

     

    "ComputerName"="zx203"

     

    ;工作组(大型网吧最好多分几个):

     

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

     

    "Workgroup"="lan3"

     

    ;CS-CDKEY

     

    [HKEY_CURRENT_USER\Software\Valve\CounterStrike\Settings]

     

    "key"="2317233759548"

     

    ;美萍机号:

     

    [HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu]

     

    "computernum"="203"

     

    ;美萍注册码:

     

    [HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu\Reg]

     

    "RegNum"=dword:00019DB6

     

    getreg.vbs内容(自动生成以上注册表文件):

     

    dim msginf,bkey,machname

     

    msginf=msgbox("提取注册表文件,是否继续?",65,"getreg") '信息提示

     

    if msginf=1 then ' 如果按确定,则

     

    Set WshShell = WScript.CreateObject("WScript.Shell")

     

    bKey = WshShell.RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName") ' 提取机算机名到变量bKey

     

    machname=inputon(bkey) ' 用函数inputon()分析

     

    if machname<>"quit" then ' 如果返回值不等于"quit",则

     

    setreg(machname) ' 运行函数setreg()生成注册表ip.reg

     

    backtoserver(machname) ' ip.reg 文件备份到服务器(绝对有用)

     

    end if

     

    end if

     

    function inputon(t1) ' 函数inputon()

     

    dim lt,rt,t2 ' 变量

     

    while true ' 循环直到退出函数

     

    t2=inputbox("请输入机器标识!","输入",t1) ' 输入机算机名,默认值为现在的计算机名

     

    if t2="" then ' 如果t2等于空(按了取消键),则

     

    inputon="quit" ' 返回值为"quit"

     

    exit function ' 退出程序

     

    end if

     

    if len(t2)=5 then ' 计算机号的长度,本网吧必须为5

     

    lt=left(LCase(t2),2) ' lt 等于前二位

     

    rt=right(LCase(t2),3) ' rt 等于后三位

     

    if lt="zx" and rt<>"" and Cint(rt)>=0 and Cint(rt)<=280 then ' 验证

     

    inputon=t2 ' 返回需要的计算机名

     

    exit function

     

    end if

     

    end if

     

    wend

     

    end function

     

    sub setreg(t) ' 生成注册表

     

    Dim fso, f1,f2,rt,ipt,pt,gateway,lan,cskey,mpkey ' 变量

     

    rt=cint(right(t,3)) ' 机号转换为数字值

     

    if rt>140 then

     

    ipt=0

     

    else

     

    ipt=1

     

    end if ' 大于140号,IP:192.168.0.X 小于140号,IP:192.168.1.X

     

    if (rt>=1 and rt<=39) or (rt>=223 and rt<=280) then

     

    lan="lan1"

     

    elseif (rt>39 and rt<=140) then

     

    lan="lan2"

     

    elseif (rt>140 and rt<223) then

     

    lan="lan3"

     

    end if ' 根据不同的机号设置工作组

     

    if (rt>=1 and rt<=140) or (rt>=223 and rt<=280) then

     

    gateway=rt mod 4

     

    if gateway=0 then

     

    gateway=4

     

    end if

     

    gateway=1 & gateway

     

    else

     

    gateway=rt mod 2

     

    if gateway=1 then

     

    gateway=15

     

    elseif gateway=0 then

     

    gateway=16

     

    end if

     

    end if ' 根据不同的机号设置网关

     

    pt=rt

     

    if pt=200 then

     

    pt=252

     

    end if

     

    if pt=250 then

     

    pt=253

     

    end if ' 历史原因,ip 200250被服务器用了,改为252,253

     

    Set fso = CreateObject("Scripting.FileSystemObject")

     

    if fso.fileexists("e:\ghostbak\ip.reg") then

     

    set f2=fso.getfile("e:\ghostbak\ip.reg")

     

    f2.delete

     

    end if ' 如果存在ip.reg,先删了

     

    cskey=getcskey() ' 函数getcskey() 得到CSCDKEY

     

    mpkey=getmpkey() ' 函数getmpkey()得到美萍的CDKEY

     

    set f1 = fso.CreateTextFile("e:\ghostbak\ip.reg", True) ' 建立文件ip.cfg

     

    f1.WriteLine("REGEDIT4") ' 以下为生成注册表

     

    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) & "192.168." & ipt & "." & pt & chr(34)) ' IP

     

    f1.WriteLine("[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]")

     

    f1.WriteLine(chr(34) & "DefaultGateway" & chr(34) & "=" & chr(34) & "192.168.0." & 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.254.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)) ' 工作组

     

    f1.WriteLine("[HKEY_CURRENT_USER\Software\Valve\CounterStrike\Settings]")

     

    f1.WriteLine(chr(34) & "key" & chr(34) & "=" & chr(34) & cskey & chr(34)) ' CS-CDKEY

     

    f1.WriteLine("[HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu]")

     

    f1.WriteLine(chr(34) & "computernum" & chr(34) & "=" & chr(34) & rt & chr(34)) ' 美萍机号

     

    f1.WriteLine("[HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu\Reg]")

     

    f1.WriteLine(chr(34) & "RegNum" & chr(34) & "=dword:" & mpkey) ' 美萍注册码

     

    end sub

     

    function getmpkey() ' 函数getmpkey()得到美萍的CDKEY

     

    dim mpkey,lenmpkey

     

    Set WshShell = WScript.CreateObject("WScript.Shell")

     

    mpkey=hex(WshShell.RegRead("HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu\Reg\RegNum"))

     

    mpkey="0000" & mpkey

     

    getmpkey=mpkey

     

    end function

     

    ' 函数getcskey() 从服务器的\\Server\系统更新\cs-cdkey.txt文件得到CSCDKEY(随机)

     

    function getcskey()

     

    dim fso,ts,rndnumb,count

     

    Randomize

     

    rndnumb=Int(100 * Rnd + 1)

     

    Set fso = CreateObject("Scripting.FileSystemObject")

     

    Set ts = fso.OpenTextFile("\\Server\系统更新\cs-cdkey.txt", 1)

     

    for count=1 to rndnumb

     

    ts.skipline

     

    next

     

    getcskey=trim(ts.ReadLine)

     

    end function

     

    function backtoserver(t) ' ip.reg 文件备份到服务器

     

    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

     

    if fso.fileexists("e:\ghostbak\ip.reg") then

     

    set c=fso.getfile("e:\ghostbak\ip.reg")

     

    c.copy ("\\Server\系统更新\ip\" & t & ".reg")

     

    end if

     

    end function

     

    cs-cdkey.txt 文件内容(共100个,每行一个)

     

    2696734026608

     

    5498338402186

     

    3865568763903

     

    2696734026608

     

    1154247940716

     

    .

     

    .

     

    OK,以上完成了,以后只要想办法在克隆重启后自动运行ip.cfg,就可以了:

     

    更改系统盘的autoexec.bat为如下:

     

    @echo off

     

    if exist e:\ghostbak\ip.reg goto setreg

     

    goto end

     

    :setreg

     

    regedit e:\ghostbak\ip.reg

     

    del e:\ghostbak\ipcfg.reg

     

    ren e:\ghostbak\ip.reg ipcfg.reg

     

    :end

     

    知道了吗,只要e:\ghostbak\下存在ip.reg,就导入注册表,然后改名为ipcfg.reg

     

    思路已经明确,接下来针对ghost 的六种不同情况只要略微改变一下程序就能全部自动执行了:

     

    1、单机克隆,文件到分区:

     

    运行gst.bat 内容如下:

     

    ren e:\ghostbak\ipcfg.reg ip.reg

     

    : format ,省得ghost 后再对C盘查错

     

    format c: /s/u/autotest

     

    e:\ghostbak\ghost.exe -clone,mode=pload,src=e:\ghostbak\ghost\win98.gh1,dst=1:1 -sure -fx -rb

     

    2、单机克隆,分区到分区(不开机箱):

     

    getreg.vbs backtoserver()函数后在加上以下代码:

     

    copyfiles(machname) ' 函数copyfiles() 从服务器复制需要的文件到客户端

     

    Set WshShell = Wscript.CreateObject("Wscript.Shell")

     

    WshShell.Run ("\\Server\系统更新\shutdown.exe -r") ' shutdown.exe 关机宝,网上找

     

    sub copyfiles(t)

     

    dim sys,gho,mpmenu,mplan,mpnet,mpsingle

     

    sys="\\Server\系统更新\" ' 服务器路径

     

    rt=cint(right(t,3)) ' 提取机号

     

    if (rt>=28 and rt<=140) or rt=23 then

     

    gho="win98A.gho"

     

    elseif (rt>140 and rt<179) or (rt>=1 and rt<=21) or (rt>=24 and rt<=27) or rt=22 then

     

    gho="win98B.gho"

     

    elseif (rt>=179 and rt<=280) then

     

    gho="win98C.gho"

     

    end if ' 根据不同的配置复制不同的备份文件

     

    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

     

    if fso.fileexists(sys & gho) then

     

    set c=fso.getfile(sys & gho)

     

    c.copy ("e:\ghostbak\win98.gho")

     

    end if ' 开始复制

     

    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

     

    if fso.fileexists(sys & "autoexec.bat") then

     

    set c=fso.getfile(sys & "autoexec.bat")

     

    c.copy ("c:\autoexec.bat")

     

    end if ' 把服务器上的autoexec.bat 覆盖c:盘的,用以重启后自动开始ghost

     

    end sub

     

    服务器上的autoexec.bat 内容:

     

    format c: /s/u/autotest

     

    e:\ghostbak\ghost.exe -clone,mode=pload,src=e:\ghostbak\ghost\win98.gh1,dst=1:1 -sure -fx -rb

     

    很简单吧,就是开始ghost

     

    3、单机克隆,分区到分区(开机箱):

     

    说了不推荐,早干什么去了,为什么不留备份呢?不过你一定要用也没关系,方法同1,只要改下ghost参数。

     

    4、单机克隆,DISK TO DISK

     

    还是觉得累,方法同6

     

    5、多机克隆,文件到分区:

     

    写个批处理啊,net use 连到服务器后复制 ip.cfge:\ghostbak 如:

     

    ghost.bat内容:

     

    ;网卡dos 驱动

     

    net 到服务器e:\ghostbak F:

     

    copy f:\ip\%1.reg e:\ghostbak\ip.reg /y

     

    ;开始ghost

     

    运行时加参数如100号机就是:ghost.bat zx100

     

    6、多机克隆,盘到盘:

     

    a. ip目录(就是备份所有客户端注册表文件的目录)放到母盘e:\ghostbak b. 增加selectip.vbs 内容如下:

     

    dim t,lt,rt

     

    while true

     

    t=inputbox("请输入机器标识!","输入") ' 输入机号

     

    if len(t2)=5 then

     

    lt=left(LCase(t2),2)

     

    rt=right(LCase(t2),3)

     

    if lt="zx" and rt<>"" and Cint(rt)>=0 and Cint(rt)<=280 then

     

    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

     

    if fso.fileexists("e:\ghostbak\ip\" & t & ".reg") then

     

    set c=fso.getfile("e:\ghostbak\ip\" & t & ".reg") ' 根据机号得到相应注册表文件

     

    c.copy ("e:\ghostbak\ip.reg") ' 复制注册表文件

     

    set c=fso.getfile("C:\WINDOWS\Start Menu\Programs\启动\selctip.lnk")

     

    c.delete ' 删除启动项中本程序

     

    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

     

    fso.DeleteFolder("e:\ghostbak\ip") ' 删除ip目录

     

    Set WshShell = Wscript.CreateObject("Wscript.Shell")

     

    WshShell.Run ("regedit /s e:\ghostbak\ip.reg") ' 运行注册表文件

     

    WshShell.Run ("\\Server\系统更新\shutdown.exe -r") ' 重启

     

    end if

     

    wend

     

    1:母盘建立selectip.vbs的快捷方式selectip.lnk在启动组,开机后就运行,运行时删除此快捷方式。

     

    2:母盘的子网掩码取:255.255.255.254,避免克隆后一起重启网络冲突。

  • 相关阅读:
    3.8 java基础总结①多线程
    RPM Database 实战详解
    关于CentOS7.2 控制面板不显示输入法,或者无法调出输入的问题。(已解决)
    mysqldump
    一些有意思的Linux命令
    和docket的第一次亲密接触
    centos7根分区扩容(亲测有效)
    相识mongodb
    开机自动获取spark用户名和服务器
    Puppet日常总结
  • 原文地址:https://www.cnblogs.com/fjchenq/p/563043.html
Copyright © 2011-2022 走看看