Windows 自动恢复不稳定的网络连接

Windows 自动恢复不稳定的网络连接

我有一台远程访问的 Windows XP 计算机,它的网络连接状态经常会变得很奇怪 - 当您在本地计算机上时,它仍然显示为已连接,但什么都无法通过。禁用和启用网络连接可以解决问题。我猜这是一个更严重问题的征兆,但我至少要到星期一才能到机器上来解决这个问题,所以我希望找到一些实用程序或编写一个快速脚本来测试网络连接(例如telnet google.com 80或其他东西)并重新启动网络连接(如果可能),否则重新启动机器。对此进行 Google 搜索只会显示非常复杂的应急措施,我不想在找到它之前就把自己锁在外面...有人可以建议一些简单的方法吗?或者甚至每隔几个小时自动重新启动连接的方法?

答案1

如果你要弃踢然后重启,至少要先测试一下连接;所以如果你无法通过互联网检索某些内容,那么就重启。我们可以对你在还剩 70 分钟时弃踢第二档的行为吹毛求疵,但弃踢第二档的行为很愚蠢每一个第二次失败。

编辑:经过进一步的思考和好奇,以下是使用 PowerShell 实现此目的的方法,以及一些额外想法。无需调整计划,它会自动休眠三分钟,因此只需在启动时运行一次即可(powershell -File testandpunt.ps1)。我添加了一个简单的计数器,因此它不会重新启动,直到尝试失败三次。显然,更改这些值中的任何一个。更改serverfault.com为,google.com因为后者可能更快,我宁愿你抽走他们的带宽。

测试AndPunt.ps1:

$url = "http://google.com"
$i = 0 # failure count
while(1){
  try{
    $req=[system.Net.HttpWebRequest]::Create($url)
    $req.Timeout = 10000 # in milliseconds
    $res=$req.getresponse()
    $res.Close()
    $i=0 # got it, reset failure count
  }
  catch{
    $i++ # failed, bump failure count
  }
  if( $i -eq 3 ){ # i give up, reboot
    shutdown -r -t 60 -f -c "Lost connection. Rebooting in 60 seconds..."
  }
  Start-Sleep -s 180 # wait a bit
}

原始答案:可能有更好的方法,但我写了一个小脚本,只在连接失败时重新启动。如果你不使用或不能使用 vbs,那么 curl 或 python 或 perl 或其他任何工具都可以做同样的事情。

因此,您可以更紧密地安排时间(例如,每五分钟一次),以减少重启次数并减少连接中断的最大时间。

测试AndPunt.vbs:

Set WshShell = WScript.CreateObject("WScript.Shell")
Set http = CreateObject("Microsoft.XmlHttp")
http.open "GET", "http://serverfault.com/", FALSE
http.send ""
strData = http.ResponseText
if( len(strData) = 0 ) Then
    Wscript.Echo "Restarting"
    WshShell.Run "%SystemRoot%\System32\shutdown.exe -r -t 600"
End If
set WshShell = nothing
set http = nothing

答案2

在命令提示符下,您可以使用:

netsh 接口设置接口“本地连接”禁用

netsh 接口设置接口“本地连接”启用

您可以将其粘贴到新的文本文件中,使用.BAT.CMD扩展名保存,然后设置计划任务以根据需要经常启动。

不过,我建议尝试更新驱动程序,如果不行的话,就买一个 PCI 网卡,你可以花大约 2 英镑买到便宜的网卡,它完全可以完成这项工作。

答案3

我现在所做的是每 30 分钟安排以下任务:

%SystemRoot%\System32\shutdown.exe -r -t 600

所以如果它死机了,最坏的情况是我会在 40 分钟内恢复。这意味着我必须shutdown -a在使用它时做好准备。

有人知道每半小时重启一次机器是否会造成危害吗?

相关内容