O Windows restaura automaticamente a conexão de rede flakey

2

Eu tenho uma máquina com Windows XP que estou acessando remotamente, que tem tendência a entrar em um estado estranho com a conexão de rede - quando você está na máquina, ela é mostrada como conectada ainda, mas nada é transmitido. Desativar e ativar a conexão de rede resolve o problema. Eu acho que isso sintomático de um problema mais sério, mas eu não posso chegar à máquina para resolver isso até pelo menos segunda-feira, então eu estava esperando encontrar algum utilitário ou colocar juntos um script rápido para testar a conexão de rede ( ou seja, telnet google.com 80 ou algo assim) e reinicie a conexão de rede, se possível, ou então reinicie a máquina. Pesquisando isso sugere apenas laps-ups realmente complicados, e eu não quero me trancar antes que eu possa chegar a ele ... Alguém pode sugerir algo simples? Ou até mesmo uma maneira de reiniciar automaticamente a conexão a cada duas horas?

    
por Colin Pickard 26.02.2010 / 18:36

3 respostas

1

Se você for puntar e reiniciar, pelo menos teste a conexão primeiro; Então, se você não pode recuperar algo pela internet, então reinicie. Nós podemos discutir sobre você apostar no segundo down com 70 para ir, mas é besteira puntar em todo segundo abaixo.

EDIT: Depois de mais reflexão e curiosidade, aqui está a maneira do PowerShell de fazer isso, com algumas ideias de bônus. Não há necessidade de mexer com agendas, ele automaticamente dorme por três minutos, então basta executá-lo uma vez na inicialização ( powershell -File testandpunt.ps1 ). Eu adicionei um contador simples, por isso não reinicia até três tentativas falhadas. Obviamente, altere qualquer um desses valores. serverfault.com to google.com foi alterado, pois o último provavelmente é mais rápido e eu preferiria que você extraísse a largura de banda deles.

TestAndPunt.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
}

RESPOSTA ORIGINAL: Provavelmente existem maneiras melhores, mas escrevi um pequeno script para reiniciar apenas se a conexão falhar. Se você não usa ou não pode usar vbs, em seguida, curl ou python ou perl ou qualquer coisa que possa fazer a mesma coisa.

Assim, você poderá programá-lo com mais firmeza - digamos, a cada cinco minutos - para reduzir as reinicializações e reduzir o tempo máximo de conexão.

TestAndPunt.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
    
por 26.02.2010 / 22:24
2

No prompt de comando, você pode usar:

netsh interface set interface "Local Area Connection " DISABLE

netsh interface set interface "Local Area Connection " ENABLE

Você pode colá-lo em um novo arquivo de texto, salvar com uma extensão .BAT ou .CMD e, em seguida, configurar uma tarefa agendada para iniciar quantas vezes quiser.

No entanto, eu recomendo tentar atualizar o driver e, se ele não funcionar, comprar uma placa de rede PCI, você pode obter as mais baratas por cerca de £ 2, que são mais do que capazes de fazer o trabalho.

    
por 26.02.2010 / 20:05
0

O que eu fiz por agora é agendar o seguinte como uma tarefa a cada 30 minutos:

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

Então se ele morrer, no pior caso eu voltarei em menos de 40 minutos. Isso significa que eu tenho que estar pronto com shutdown -a quando estou usando.

Alguém sabe se pode ser prejudicial deixar a sua máquina reinicializando a cada meia hora?

    
por 26.02.2010 / 19:48