Ajuda com código
Olá pessoal, preciso de uma ajuda como seguinte, desde já, agradeço por qualquer ajuda...
Pergunta:
Dado um arquivo 'ips.txt' com uma lista de endereços, o programa deve dar um ping para cada ip/domínio cadastrado. A linha contendo os resultados (mínimo, máximo, média)deve ser salva em arquivo 'log_data_hora.txt'.
ips.txt
www.claro.com.br;Servidor Claro
www.colombo.com.br;Servidor Colombo
www.renner.com.br;Servidor Renner
www.gmail.com.br;Servidor Email Google
tenho o seguinte código:
import os
from datetime import datetime
def titulo(texto):
print()
print(texto)
print('\033[7;97;40m-\033[m'*40)
######################################
def listar():
print('\033[7;97;40mListagem de IPs\033[m')
print('\033[7;97;40m=\033[m'*72)
arq = open('ips.txt', 'r')
num = 0
linha = arq.readline()
print('\033[7;97;40mNº .: IP/Dominio ...............: Cliente/Serviço ..................: \033[m')
while linha != '':
num = num + 1
partes = linha.split(';')
print(f'\033[7;97;40m {num:3} {partes[0]:30s} {partes[1][:-1]}\033[m')
linha = arq.readline()
arq.close()
print('\033[7;97;40m-\033[m'*72)
'''
funcao que recebe um ip como parametro
o tempo medio de resposta de um ping para este ip
ou -1, caso erro
'''
def ver_media(ip):
dados = os.popen('ping '+ ip) # executa um comando no sistema operacional
media = ''
#find: retorna a posicao da string
#(se nao encontrar retorna 0)
for linha in dados:
if linha.find('M‚dia') >= 0:
posicao = linha.rfind('=')
mediams = linha[posicao+1:]
ms = mediams.rfind('ms')
media = mediams[0:ms]
if media == '':
return -1
else:
return int(media)
def testar():
titulo('\033[7;97;40mTestando IPs Cadastrados\003[m')
print('\033[7;97;40mIP/Domínio............ Tempo(ms)\033[m')
print('\033[7;97;40m-\033[m'*40)
arqLog = open('logs.txt', 'a') #salva em arquivo cada teste
arq = open('ips.txt', 'r')
linha = arq.readline()
while linha != '':
partes = linha.split(';')
tempo = ver_media(partes[0])
funcao = ver_media(partes[1])
agora = datetime.now()
dia = agora.strftime('%d/%m/%Y')
hora = agora.strftime('%H:%M:%S')
print(f'\033[7;97;40m{partes[0]:25s} {tempo}\033[m')
arqLog.write(partes[0]+';'+str(tempo)+';'+dia+';'+hora+'\n')
linha = arq.readline()
arq.close()
arqLog.close()
####################################################
def logs():
titulo('\033[7;97;40m Listagem de Logs \033[m')
arq = open('logs.txt', 'r')
print('\033[7;97;40mNº..: IP / Dominio............: Média (ms): Dia do accesso..: Hora..:\033[m')
num = 0
linha = arq.readline()
while linha != '':
num = num + 1
partes = linha.split(';')
ip = str(partes[0])
tempo = str(partes[1])
dia = str(partes[2])
hora = str(partes[3])
print(f'\033[7;97;40m{num:3d} {ip:30s} {tempo:3s} {dia:17s} {hora} \033[m', end='')
linha = arq.readline()
arq.close()
print('-'*43)
print('\033[7;97;40m -> Se o tempo em ms, for igual a\033[m \033[1;31m-1\033[m,\033[7;97;40m\n'
' o host não está respondendo\033[m')
return
######################### programa principal
while True:
print('\033[7;97;40m=\033[m' * 43)
print('''\033[3;30;44m#### Selecione uma Opção: ####\033[m \033[7;97;40m
1. Listar Ips
2. Testar
3. Log de testes
4. Finalizar
\033[m\n ''')
print('\033[7;97;40m=\033[m' * 43)
opcao = int(input('\033[3;30;44mDigite sua opção:\033[m '))
if opcao == 1:
listar()
elif opcao == 2:
testar()
elif opcao == 3:
logs()
elif opcao == 4:
calcula()
elif opcao == 5:
print('\033[1;30mPrograma Finalizado pelo Usuário!!!\n'
'==//==//==//==//==//==//==//==//==//\033[m')
exit()
else:
print('\033[1;31mOps...\n'
' Opção Inválida!!!\033[m')
break
Discussão (0)
Carregando comentários...