Merge pull request 'ReadIPs' (#1) from ReadIPs into main

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2024-04-14 13:29:40 +02:00
2 changed files with 55 additions and 13 deletions

1
.env Normal file
View File

@@ -0,0 +1 @@
DISCORD_WEBHOOK_URL='https://discord.com/api/webhooks/1229025346385608824/kIt2dp2znu0jR85QbOPmoMAteHaB9BCJDTMfn0cHE9mwpxHkbUNc9By2Y7n6gpufoyco'

View File

@@ -1,6 +1,16 @@
import argparse import argparse
from pythonping import ping from pythonping import ping
import ipaddress
import requests
import os
from dotenv import load_dotenv
load_dotenv()
def read_document(document_name):
with open(document_name, 'r') as file:
# Leer todas las líneas del archivo y guardarlas en un conjunto
return {linea.rstrip('\n') for linea in file}
def parseArguments(): def parseArguments():
# Crear un objeto ArgumentParser # Crear un objeto ArgumentParser
@@ -12,11 +22,7 @@ def parseArguments():
try: try:
# Parsear los argumentos de la línea de comandos # Parsear los argumentos de la línea de comandos
args = parser.parse_args() return parser.parse_args()
if args.web:
return args.web
elif args.host:
return args.host
except argparse.ArgumentError as e: except argparse.ArgumentError as e:
# Si ocurre un error al analizar los argumentos, mostrar un mensaje de error # Si ocurre un error al analizar los argumentos, mostrar un mensaje de error
print("Error:", e) print("Error:", e)
@@ -24,15 +30,50 @@ def parseArguments():
parser.print_help() parser.print_help()
exit() exit()
def check_ping(host): def toIP(hosts):
ips = set()
for host in hosts:
try: try:
response = ping(host, count=4, timeout=2) # verbose=True -> Para ver la respuesta del ping ip = ipaddress.IPv4Address(host)
return True if response.success() else False ips.add(ip)
except ipaddress.AddressValueError:
print(f"La entrada '{host}' no es una dirección IP válida.")
return ips
def check_ping(hosts):
for host in hosts:
try:
print(f'Pingin host: {host}')
response = ping(str(host), count=4, timeout=2) # verbose=True -> Para ver la respuesta del ping
if not response.success():
print(False)
send_discord_message(f"Ping fallido para el host: {host}")
else:
print(True)
except Exception as e: except Exception as e:
print(f"Error making ping to {host}: {e}") print(f"Error making ping to {host}: {e}")
return False
def send_discord_message(message):
webhook_url = os.getenv('DISCORD_WEBHOOK_URL')
data = {
"content": message
}
try:
response = requests.post(webhook_url, json=data)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"Error sending Discord message: {e}")
else:
print("Discord message sent successfully!")
if __name__ == '__main__': if __name__ == '__main__':
args = parseArguments() args = parseArguments()
print(check_ping(args)) ips_and_hosts = set()
if args.host:
ips_and_hosts.update(toIP(read_document(args.host)))
print(ips_and_hosts)
if args.web:
print("Hay webs")
# Parsear correctamente
# ips_and_hosts.update()
check_ping(ips_and_hosts)