diff --git a/scripts/interfaces.py b/scripts/interfaces.py index dd88f60..2747af8 100644 --- a/scripts/interfaces.py +++ b/scripts/interfaces.py @@ -1,10 +1,13 @@ import os -import netifaces -import socket -import requests import datetime +from pathlib import Path + +import netifaces +import requests + +# SDSAT/bin/interfaces.py -> SDSAT/logs/ +DEFAULT_LOG_DIR = str(Path(__file__).resolve().parent.parent / "logs") -LOG_DIR = "/sdsat/logs/" def get_mac_addresses(): interfaces = netifaces.interfaces() @@ -12,22 +15,23 @@ def get_mac_addresses(): for interface in interfaces: try: - mac = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]['addr'] + mac = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]["addr"] mac_addresses.append(mac) except KeyError: pass return mac_addresses + def get_interface_info(mac_address): interfaces = netifaces.interfaces() for interface in interfaces: try: addresses = netifaces.ifaddresses(interface) - mac = addresses[netifaces.AF_LINK][0]['addr'] + mac = addresses[netifaces.AF_LINK][0]["addr"] if mac == mac_address: - ip = addresses[netifaces.AF_INET][0]['addr'] + ip = addresses[netifaces.AF_INET][0]["addr"] name = interface return ip, name except KeyError: @@ -35,19 +39,21 @@ def get_interface_info(mac_address): return None, None + def get_public_ip(): try: - response = requests.get('https://api.ipify.org?format=json') + response = requests.get("https://api.ipify.org?format=json", timeout=5) data = response.json() - return data['ip'] + return data["ip"] except requests.RequestException: return None + def create_hostname(public_ip): if public_ip: return "SDSAT-" + public_ip.replace(".", "") - else: - return None + return None + def get_network_interface_info(): mac_addresses = get_mac_addresses() @@ -60,34 +66,38 @@ def get_network_interface_info(): return interface_info -def write_log(action): + +def write_log(action, log_dir=DEFAULT_LOG_DIR): current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") log_entry = f"{current_time} : {action}" - log_file_path = os.path.join(LOG_DIR, "interfaces_check_log.txt") - with open(log_file_path, "a") as log_file: + os.makedirs(log_dir, exist_ok=True) + log_file_path = os.path.join(log_dir, "interfaces_check_log.txt") + with open(log_file_path, "a", encoding="utf-8") as log_file: log_file.write(log_entry + "\n") -# Verifier si le repertoire de logs existe, sinon le creer -if not os.path.exists(LOG_DIR): - os.makedirs(LOG_DIR) -interface_info = get_network_interface_info() +def main(log_dir=DEFAULT_LOG_DIR): + interface_info = get_network_interface_info() -if len(interface_info) > 0: - write_log("Informations sur les interfaces reseau :") - for mac_address, ip, name in interface_info: - write_log(f"Adresse MAC : {mac_address}") - write_log(f"Adresse IP : {ip}") - write_log(f"Nom de l'interface : {name}") - write_log("") -else: - write_log("Aucune carte reseau trouvee.") + if len(interface_info) > 0: + write_log("Informations sur les interfaces reseau :", log_dir=log_dir) + for mac_address, ip, name in interface_info: + write_log(f"Adresse MAC : {mac_address}", log_dir=log_dir) + write_log(f"Adresse IP : {ip}", log_dir=log_dir) + write_log(f"Nom de l'interface : {name}", log_dir=log_dir) + write_log("", log_dir=log_dir) + else: + write_log("Aucune carte reseau trouvee.", log_dir=log_dir) -public_ip = get_public_ip() -hostname = create_hostname(public_ip) + public_ip = get_public_ip() + hostname = create_hostname(public_ip) -if hostname: - write_log(f"Adresse IP publique : {public_ip}") - write_log(f"Hostname : {hostname}") -else: - write_log("Impossible de recuperer l'adresse IP publique.") + if hostname: + write_log(f"Adresse IP publique : {public_ip}", log_dir=log_dir) + write_log(f"Hostname : {hostname}", log_dir=log_dir) + else: + write_log("Impossible de recuperer l'adresse IP publique.", log_dir=log_dir) + + +if __name__ == "__main__": + main()