progredes20261/topicos_avancados/ping2.py

36 lines
1.4 KiB
Python
Raw Permalink Normal View History

2026-03-27 23:48:50 +00:00
import subprocess
import platform
import utilidades
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'
# MUDANÇA 1: O comando agora é uma lista de strings, não um texto único.
comando = ['ping', parametro, '1', endereco]
try:
# MUDANÇA 2: Usamos subprocess.run()
# capture_output=True impede que o texto padrão do ping suje a tela.
# text=True garante que o resultado venha em formato de texto.
resultado = subprocess.run(comando, capture_output=True, text=True)
print("\n" + "-" * 40)
# MUDANÇA 3: O Exit Code agora é acessado via resultado.returncode
if resultado.returncode == 0:
print(f" SUCESSO: O IP '{endereco}' está ONLINE e respondeu.")
# Bônus: Podemos acessar o texto real da resposta do terminal!
# print(" Detalhes do teste:", resultado.stdout.strip())
else:
print(f" FALHA: O IP '{endereco}' está OFFLINE ou não respondeu.")
print("-" * 40)
except Exception as e:
print(f" ERRO NO SISTEMA: Falha ao tentar executar o comando de ping. Detalhes: {e}")