domingo, 27 de setembro de 2020

Como monitorar a sua conexão de internet

Já faz algum tempo que penso em uma maneira de monitorar constantemente a conexão de internet aqui de casa. A intenção seria saber se a rede está suficientemente estável e principalmente ser alertado quando ela fica indisponível. Em tempos de home office, admito que essa necessidade até se tornou mais evidente, pois não foram uma nem duas vezes que fui bruscamente desconectado durante uma reunião virtual, me permitindo voltar apenas quando habilitei o roteamento do 4G do celular e reconectei através dele.

O problema que relato poderia muito bem ser resolvido apenas executando o bom e velho "ping". No Windows, disparando o comando contra o DNS da Google pra deixar em constante execução, seria algo assim: "ping 8.8.8.8 -t".

Comando "ping"

No exemplo acima, enquanto o tempo de resposta for baixo e obtiver uma variação pequena, pode-se dizer que a qualidade da conexão está boa. Quando aparecer que o tempo limite do pedido foi esgotado, é sinal de que há problemas com a conectividade. No caso da rede de destino inacessível, como apareceu na imagem, foi porque eu desconectei a wi-fi do notebook pra provocar o erro e mostrar o "esgotado o tempo limite do pedido", que é a mensagem retornada quando o destino não é alcançado, no caso, o Google. E se não tem Google, não tem internet. 😂

Entretanto, apesar de haver uma solução bastante simples, fui em busca de algo mais elaborado. Encontrei algumas variações de scripts, parte delas utilizando Shell Script (para Linux) e outras Powershell (também do Windows).

Nessa busca, achei um cara sugerindo duas opções de scripts em Powershell para monitorar a conectividade com a internet. Uma mais simples e outra um pouco mais complexa.

checkInternetSimple.ps1 | Essa opção é a mais básica e indica apenas se há ou não conexão com a internet.

checkInternetContinuous.ps1 | Essa alternativa é a mais avançada e além de indicar se há ou não conectividade com a internet, mostra o tempo desde que a conexão foi estabelecida (a partir do momento que o script começou a rodar) e também o tempo desde a desconexão. Além disso, é apresentado o uptime, calculando o percentual atingido com base no período conectado e desconectado.

Como é possível perceber, o comando "ping" é a essência de tudo. Pois mostrei como é possível utilizá-lo exclusivamente, e esses scripts, por "baixo dos panos", de certa forma, é o que estão fazendo ("pingando" o site), mas claro que com muito mais elegância e requinte, utilizando parte do poderio que o Powershell oferece.

ExecutionPolicy no Powershell

Se você tiver interesse e acho que terá, caso contrário não teria chegado até aqui, o código fonte dos scripts que apresentei estão disponibilizados no GitHub do autor e podem ser encontrados clicando aqui. E caso deseje baixar os arquivos diretamente no formato do Powershell, seguem em checkInternetContinuous.ps1 e checkInternetSimple.ps1.

Dica: Caso você nunca tenha executado scripts de terceiros no seu Powershell, lembre de modificar a política de execução. Para consultá-la, você deve rodar o comando "Get-ExecutionPolicy". Se já não estiver, deve ser alterada para "Unrestricted" e essa modificação é feita pelo comando "Set-ExecutionPolicy Unrestricted".

P.S.: Como recentemente me mudei, estou com um novo provedor de internet e as falhas relatadas ainda no primeiro parágrafo, por enquanto não ocorreram.

Nenhum comentário:

Postar um comentário