Windows網絡從新啓動

原文06年發表在CU博客上,原文名爲《禁用-啓用網絡鏈接》這篇文章是我廢棄的CU博客上的文章,很早之前發表的感受不錯因此挪過來了。
 
做系統管理員已經近兩年了,經過 mstsc 登錄到 IDC Server 上進行遠程管理成了天天例行的公事。 IDC 一般會分給託管服務器一段 IP ,好比咱們公司的 netmask 255.255.255.192 ,可用的 IP 地址是 XXX.XXX.XXX.129~XXX.XXX.XXX.190 ,其中分給咱們公司的是 XXX.XXX.XXX.146/26~XXX.XXX.XXX.160/26 一共 15 個公網 IP 。有的時候根據業務需求,須要將不一樣的 IP 地址綁定到不一樣的網卡或者服務器上。而 Windows 網絡設置管理方面一般須要從新啓動計算機纔可以生效。這樣服務器非計劃停機而出現的中斷服務的狀況是咱們所不想看到的。那麼怎樣儘可能減小中斷服務時間讓訪問者感受無縫聯接,又能使修改的設置生效呢?
  我想到了用腳本禁用啓用網卡的方式實現。若是在 local computer 啓用禁用網絡設備固然很容易,經過圖形界面就能夠實現。可是終端鏈接的服務器這樣作無異於 commit suicide server 上若是有兩塊網卡且都有公網 IP 卻是好說,一個不行了連另外一個也能夠。可是每每在 server 應用上是一塊網卡對公網客戶提供訪問服務,另外一塊則一般是爲前端的 web server cachepower 或者 squid 與內部應用如數據庫等提供通訊。若是公網那塊網卡被禁用,可就有×××煩了,但至少還能夠連到同在一個局域網的其餘 server 上,經過內部地址連上服務器再 enable disabled network card 。要是 server 只有一塊網卡那就非得去一趟 IDC 才行了。
  說了這麼多廢話就來看看這個腳本是怎麼寫的吧,
 
Const ssfCONTROLS = 3
' 網絡適配器的名字,默認應該叫本地鏈接
sConnectionName = "lan"
' 下面兩行都要根據實際狀況,看一下圖形界面下的是停用仍是禁用,不一樣的系統不太同樣
'& 後面加的是對應動做的表明字母
sEnableVerb = " 啓用 (&A)"
sDisableVerb = "
停用 (&B)"
set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)
set .etConnections = nothing
for each folderitem in oControlPanel.items
  if folderitem.name  = "
網絡鏈接 " Then 
' 開始設置中的網絡設備管理器同名,應該都叫網絡鏈接吧,不同改一下就好
  set .etConnections = folderitem.getfolder: exit for
  end if
next
if .etConnections is nothing then
  msgbox "Couldn't find 'Network Connections' folder"
  w..quit
end if
set oLanConnection = nothing
for each folderitem in .etConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next
if oLanConnection is nothing then
  msgbox "Couldn't find '" & sConnectionName & "' item"
  w..quit
end if
bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb 
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb 
  end if
next
if bEnabled then
  oDisableVerb.DoIt
end if
w..sleep 5000
bEnabled = true
for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
 set oEnableVerb = verb 
 bEnabled = false
  end if
  if verb.name = sDisableVerb then
 set oDisableVerb = verb 
  end if
next
 oEnableVerb.DoIt
w..sleep 1000
相關文章
相關標籤/搜索