ison - testar conectividade da máquina
Publicado por Pedro Fernandes (última atualização em 19/04/2022)
[ Hits: 7.555 ]
Homepage: https://github.com/PedroF37
Download 1638554281.ison (versão 2)
Script para testar conectividade da máquina, usando a ferramenta ping, nos vários pontos da rede, apontando se for o caso em que ponto da rede está o problema da conexão. O procedimento usado pelo script é:
1. ping na loopback
2. ping no gateway
3. ping em um número ip na internet
4. ping em um nome de domínio na internet
Lógica do script:
1. se chega na loopback, então TCP/IP da máquina à partida está OK
2. se chega no gateway, então conexão com gateway está OK
3. se chega na internet usando ip, então tem conexão com Internet
4. se chega na internet usando nome de domínio, então resolução de nomes está OK.
Script testa apenas se tem ou não conexão. Não testa questões de largura de banda nem perdas de pacotes nem problemas de rota etc.
Versão 2 - Enviado por Pedro Fernandes em 03/12/2021
Changelog: Script foi reescrito do zero com base em dicas do usuário aqui do site "msoliver (Marcelo Oliver)" para ficar mais enxuto e um pouco "?" mais eficiente?
Dicas postadas em comentário aqui: "https://www.vivaolinux.com.br/script/ison-testar-conectividade-da-maquina".
#!/bin/bash # ############################################################ # # Script: ison # Autor: pedro fernandes # Email: pedrobfernandes37@gmail.com # Data: 30-04-2021 # # ------------------------------------------------------- # # Descrição: Testa conectividade da máquina usando o ping # nos vários pontos da rede, apontando se for # o caso em que ponto da rede está o possível # problema na conexão. # # Procedimento: # # 1. ping loopback # 2. ping gateway # 3. ping ip na internet # 4. ping nome de domínio na internet # # ------------------------------------------------------ # # Nota: Variáveis DnsAddr e DomainTest, estão configuradas # para o dns da cloudfare e url google por padrão. # Para usar outros valores basta definir-los na # linha de comando na chamada do script (ver abaixo). # Da mesma forma, variável TimeOut refere-se # ao parâmetro -w (deadline) do ping e está # configurada por padrão para 5 segundos. # Para mudar, novamente ver abaixo nos exemplos de uso. # # ------------------------------------------------------- # # Alguns exemplos de Uso: # # 1. Usa valores padrão # # $ ./ison # # 2. Muda os valores do dns e do dominio # # $ DnsAddr=x.x.x.x DomainTest=www.xxxx.xxx.com ./ison # # 3. Muda valor apenas do dns # # $ DnsAddr=x.x.x.x ./ison # # 4. Muda apenas o dominio # # $ DomainTest=www.xxx.xxx.com ./ison # # 5. Especificar um deadline diferente # # $ TimeOut=x ./ison # # Pode mudar todos os parâmetros: # # $ DnsAddr=x.x.x.x DomainTest=www.xxxxx.xxx.com TImeOut=x ./ison # ############################################################ # ##### PARÂMETROS # Ping=$(type -p ping) TimeOut=${TimeOut:- 5} Ip=$(type -p ip) Route=$(type -p route) LoopBack=127.0.0.1 DnsAddr=${DnsAddr:-1.1.1.1} DomainTest=${DomainTest:-'www.google.com'} # ############################################################ # ##### FUNÇÕES # function MissingMsg { # if [ $# -eq 1 ] then echo Você não tem utilitário $1 instalado >&2 echo Nesse caso não podemos prosseguir. >&2 echo Terminando script... >&2 exit 1 # elif [ $# -eq 2 ] then echo Você não tem utilitário $1 'e|ou' $2 instalado >&2 echo Nesse caso não podemos prosseguir. >&2 echo Terminando script.... >&2 exit 1 fi } # function UserIntro { # echo ' ************************************************* O script ison, testa a conectividade da máquina, usando a ferramenta ping para enviar pacotes de requisição de echo para vários pontos da rede em ordem. O procedimento usado pelo script é: 1. Testa a interface de loopback. Se der certo TCP/IP da máquina está funcionando. 2. Testa a conexão da máquina com o gateway. Se der certo, tem comunicação com gateway. 3. Testa a conectividade com 1 host na internet usando o endereço ip. Se der certo, consegue alcançar internet. 4. Testa a conectividade com 1 host na internet usando o nome de dominio. Se der certo resolução de nomes está funcionando. NOTA: Script NÃO testa problemas de largura de banda nem problemas de rotas ou perdas de pacotes. Testa apenas se tem conexão e caso não tenha em que ponto da rede não tem a conexão. *************************************************' # echo -e "Continuar para o script [S/n] ? \c" read -n 1 answer # case $answer in S | s) echo -e "\nProsseguindo...." return ;; N | n) echo -e "\nTerminando..." exit 0 ;; *) echo -e "\nInválido. Terminando..." >&2 exit 1 ;; esac } # function IsUp { # $Ping -q -w $TimeOut $1 case $? in 0) if [ -n "$line2" ] then echo echo '#####################################' echo -e "\n$line1" echo -e "$line2\n" echo '#####################################' echo sleep 2 else echo echo '#####################################' echo -e "\n$line1\n" echo '#####################################' echo sleep 2 fi ;; *) if [ -n "$error2" ] then echo echo '#####################################' echo -e "\n$error1" >&2 echo -e "$error2\n" >&2 echo '#####################################' echo exit 1 else echo echo '#####################################' echo -e "\n$error1\n" >&2 echo '#####################################' echo exit 1 fi ;; esac unset line1 unset line2 unset error1 unset error2 return } # ############################################################ # ###### VERFICAÇÕES # if [ -z "$Ping" ] then MissingMsg ping fi # if [ -n "$Ip" ] then Gateway=$($Ip route | head -1 | cut -d ' ' -f 3) # elif [ -n "$Route" ] then Gateway=$($Route -n | head -3 | tail -1 | \ gawk '{print $2}') else MissingMsg ip route fi # ########################################################### # ##### INTRO OU NÃO? # echo -e "Ver introdução ao script [S/n] ? \c" read -n 1 answer # case $answer in S |s) clear UserIntro ;; N |n) clear : ;; *) echo -e "\nInválido. Terminando...." >&2 exit 1 ;; esac # ########################################################### # ##### LOOPBACK # line1='Tem conectividade com loopback' error1='Não conseguimos alcançar loopback' # clear echo -e 'Testando sua interface de loopback\n' IsUp "$LoopBack" # ############################################################ # ##### GATEWAY # echo -e 'Testando conexão com o gateway....\n' line1='Tem conexão com o gateway' error1='Não conseguimos alcançar o gateway' IsUp "$Gateway" # ############################################################ # ##### CONEXÃO INTERNET (IP) # clear echo -e 'Testando conectividade para a internet....\n' echo Primeiro testando por número ip.... # line1='Estamos conseguindo alcançar a internet' line2='através do endereço ip.' error1='Erro ao tentar conectar na internet' error2='através do endereço ip.' IsUp "$DnsAddr" # ############################################################ # ##### CONEXÃO INTERNET (DOMÍNIO) # echo Tentando agora alcançar através de echo -e 'nome de dominio.....\n' # line1='Consegimos alcançar dominio na internet.' error1='Não conseguimos alcançar dominio na internet.' IsUp "$DomainTest" # echo Todos os teste foram concluídos exit 0 # ############################################################
Instalação do aplicativo Franz
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Tentando instalar o Ekattor School no xampp (5)
Definir tempo limite para acesso ssh (4)
Problema instalação do sige software gestão escolar script gratuito (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta