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
相关文章
相关标签/搜索