progredes20261/topicos_avancados/ping.py

47 lines
2.5 KiB
Python

# Execute um teste de conectividade com um único destino da rede, utilizando o comando ping do sistema operacional.
# O aluno deve solicitar ao usuário um IP ou nome de host, montar o comando com os.system() e informar se o destino respondeu ou não.
import os
# O módulo os (Operating System) permite que o Python interaja com o sistema operacional.
# Neste script, ele será usado para enviar o comando de "ping" diretamente para o terminal do seu computador.
import platform
# Este módulo serve para obter informações sobre o hardware e o sistema operacional em que o script está rodando.
# Ele será crucial para sabermos se você está usando Windows, Linux ou macOS.
import utilidades
# Esta não é uma biblioteca padrão do Python.
# Trata-se de um módulo personalizado (provavelmente um arquivo chamado utilidades.py criado por quem fez o código original e salvo na mesma pasta).
# Ele contém funções criadas pelo usuário.
endereco = input("Digite um endereço IP: ")
if not utilidades.validar_ip(endereco):
print("O endereço IP é inválido!")
else:
print(f"\n IP Validado! Testando conectividade para {endereco}...\n")
parametro = '-n' if platform.system().lower() == 'windows' else '-c'
# A segunda linha é uma jogada muito inteligente e comum em redes.
# O comando ping funciona diferente dependendo do sistema:
# No Windows, para dar apenas 1 ping, usamos o parâmetro -n 1 (number).
# No Linux/macOS, usamos -c 1 (count).
# platform.system().lower() == 'windows': Ele pergunta ao seu computador qual é o sistema.
# Se a resposta for 'windows', a variável parametro recebe -n. Se não for (seja Linux, macOS, etc.), ela recebe -c.
comando = f"ping {parametro} 1 {endereco}"
codigo_retorno = os.system(comando)
# É aqui que a mágica acontece. O Python pega aquele texto e executa no terminal da sua máquina, como se você mesmo tivesse digitado.
# Quando um comando de terminal termina, ele devolve um número para o sistema, chamado de Exit Code (Código de Retorno):
# 0 (Zero): Significa "Sucesso". O comando rodou perfeitamente (ou seja, o IP respondeu ao ping).
# Qualquer número diferente de 0 (ex: 1 ou 2): Significa que houve um erro (o IP está offline ou inacessível).
# Esse número é guardado na variável codigo_retorno.
print("\n" + "-" * 40)
if codigo_retorno == 0:
print(f" SUCESSO: O IP '{endereco}' está ONLINE e respondeu.")
else:
print(f" FALHA: O IP '{endereco}' está OFFLINE ou não respondeu.")
print("-" * 40)