Files
SDSAT/scripts/registrator.py
Hubert Cornet 6bd14d59f1
Some checks failed
CI / test (push) Failing after 10s
Update scripts/registrator.py
2026-02-14 10:24:43 +01:00

86 lines
2.3 KiB
Python

import logging
import socket
from datetime import datetime
import requests
# Configuration des logs
#logging.basicConfig(filename='/sdsat/logs/registrator.log', level=logging.INFO,
# format='%(asctime)s - %(levelname)s - %(message)s')
def configure_logging():
current_file = Path(__file__).resolve()
sdsat_root = current_file.parent.parent
log_dir = sdsat_root / "logs"
log_dir.mkdir(parents=True, exist_ok=True)
log_file = log_dir / "registrator.log"
handler = RotatingFileHandler(
log_file,
maxBytes=5 * 1024 * 1024,
backupCount=3,
)
formatter = logging.Formatter(
"%(asctime)s - %(levelname)s - %(message)s"
)
handler.setFormatter(formatter)
logging.basicConfig(
level=logging.INFO,
handlers=[handler],
)
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.test-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)