diff --git a/scripts/registrator.py b/scripts/registrator.py new file mode 100644 index 0000000..e3d8d3b --- /dev/null +++ b/scripts/registrator.py @@ -0,0 +1,59 @@ +import socket +import requests +import logging +from datetime import datetime + +# Configuration des logs +logging.basicConfig(filename='/sdsat/logs/registrator.log', level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s') + +ip='69.69.69.69' + +def get_hostname(): + try: + host = socket.gethostname() + print (host) + logging.info(f"Hostname recupere : {host}") + return host + except Exception as e: + logging.error(f"Erreur lors de la recuperation du hostname : {e}") + return None + +def get_public_ip(): + try: + response = requests.get('https://httpbin.org/ip') + ip = response.json().get('origin') + logging.info(f"Adresse IP publique recuperee : {ip}") + return ip.split(",")[0] # En cas d'adresses multiples, on prend la premiere + except Exception as e: + logging.error(f"Erreur lors de la recuperation de l'IP publique : {e}") + + ip='69.69.69.69' + return ip + +def send_to_api(host, IP): + url = "http://api.sdsat.fr:8000/registrator" + data = { + "host": host, + "IP": ip, + "Date_registration": datetime.now().isoformat() + } + + try: + response = requests.post(url, json=data) + if response.status_code == 200: + logging.info(f"Donnees envoyees avec succes a l'API : {data}") + else: + logging.error(f"Erreur lors de l'envoi a l'API. Code: {response.status_code}, Message: {response.text}") + except Exception as e: + logging.error(f"Erreur lors de l'envoi a l'API : {e}") + +if __name__ == '__main__': + host = get_hostname() + ip = get_public_ip() + + print(f"Hostname: {host}") + print(f"IP Publique: {ip}") + + if host and ip: + send_to_api(host, ip)