Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 系統工具 >> ghost後無需人工干預,全自動修改IP等設置

ghost後無需人工干預,全自動修改IP等設置

日期:2017/2/8 9:08:46      編輯:系統工具

原來開的網吧小,只有六十幾台機器,如果要重做系統,就每台機器ghost,然後啟動改IP、網關等,沒感到怎麼費力,現在的網吧有近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.gho、win98B.gho、win98C.gho)

2、ip.reg:IP、標識、網關,工作組、CS-CDKEY、美萍機號和注冊號的注冊表文件。下面介紹。

3、st.bat:用於第1、2種情況。下面介紹。

4、ghost.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 200和250被服務器用了,改為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() 得到CS的CDKEY

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]")

1.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文件得到CS的CDKEY(隨機)

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//本文來自電腦軟硬件應用網www.45it.com。

3、單機克隆,分區到分區(開機箱):

說了不推薦,早干什麼去了,為什麼不留備份呢?不過你一定要用也沒關系,方法同1,只要改下ghost參數。

4、單機克隆,DISK TO DISK:

還是覺得累,方法同6

5、多機克隆,文件到分區:

寫個批處理啊,net use 連到服務器後復制 ip.cfg到e:\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,避免克隆後一起重啟網絡沖突。

以上程序在win98下運行通過,我現在網吧280台機子就是這樣克的,希望對大家有所幫助。

Copyright © Windows教程網 All Rights Reserved