Update scripts/interfaces.py
All checks were successful
CI / test (push) Successful in 12s

This commit is contained in:
2026-02-14 10:36:49 +01:00
parent 6f8e09947d
commit 4967319d92

View File

@@ -1,10 +1,13 @@
import os import os
import netifaces
import socket
import requests
import datetime 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(): def get_mac_addresses():
interfaces = netifaces.interfaces() interfaces = netifaces.interfaces()
@@ -12,22 +15,23 @@ def get_mac_addresses():
for interface in interfaces: for interface in interfaces:
try: try:
mac = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]['addr'] mac = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]["addr"]
mac_addresses.append(mac) mac_addresses.append(mac)
except KeyError: except KeyError:
pass pass
return mac_addresses return mac_addresses
def get_interface_info(mac_address): def get_interface_info(mac_address):
interfaces = netifaces.interfaces() interfaces = netifaces.interfaces()
for interface in interfaces: for interface in interfaces:
try: try:
addresses = netifaces.ifaddresses(interface) addresses = netifaces.ifaddresses(interface)
mac = addresses[netifaces.AF_LINK][0]['addr'] mac = addresses[netifaces.AF_LINK][0]["addr"]
if mac == mac_address: if mac == mac_address:
ip = addresses[netifaces.AF_INET][0]['addr'] ip = addresses[netifaces.AF_INET][0]["addr"]
name = interface name = interface
return ip, name return ip, name
except KeyError: except KeyError:
@@ -35,20 +39,22 @@ def get_interface_info(mac_address):
return None, None return None, None
def get_public_ip(): def get_public_ip():
try: try:
response = requests.get('https://api.ipify.org?format=json') response = requests.get("https://api.ipify.org?format=json", timeout=5)
data = response.json() data = response.json()
return data['ip'] return data["ip"]
except requests.RequestException: except requests.RequestException:
return None return None
def create_hostname(public_ip): def create_hostname(public_ip):
if public_ip: if public_ip:
return "SDSAT-" + public_ip.replace(".", "") return "SDSAT-" + public_ip.replace(".", "")
else:
return None return None
def get_network_interface_info(): def get_network_interface_info():
mac_addresses = get_mac_addresses() mac_addresses = get_mac_addresses()
interface_info = [] interface_info = []
@@ -60,34 +66,38 @@ def get_network_interface_info():
return 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") current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_entry = f"{current_time} : {action}" log_entry = f"{current_time} : {action}"
log_file_path = os.path.join(LOG_DIR, "interfaces_check_log.txt") os.makedirs(log_dir, exist_ok=True)
with open(log_file_path, "a") as log_file: 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") 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: if len(interface_info) > 0:
write_log("Informations sur les interfaces reseau :") write_log("Informations sur les interfaces reseau :", log_dir=log_dir)
for mac_address, ip, name in interface_info: for mac_address, ip, name in interface_info:
write_log(f"Adresse MAC : {mac_address}") write_log(f"Adresse MAC : {mac_address}", log_dir=log_dir)
write_log(f"Adresse IP : {ip}") write_log(f"Adresse IP : {ip}", log_dir=log_dir)
write_log(f"Nom de l'interface : {name}") write_log(f"Nom de l'interface : {name}", log_dir=log_dir)
write_log("") write_log("", log_dir=log_dir)
else: else:
write_log("Aucune carte reseau trouvee.") write_log("Aucune carte reseau trouvee.", log_dir=log_dir)
public_ip = get_public_ip() public_ip = get_public_ip()
hostname = create_hostname(public_ip) hostname = create_hostname(public_ip)
if hostname: if hostname:
write_log(f"Adresse IP publique : {public_ip}") write_log(f"Adresse IP publique : {public_ip}", log_dir=log_dir)
write_log(f"Hostname : {hostname}") write_log(f"Hostname : {hostname}", log_dir=log_dir)
else: else:
write_log("Impossible de recuperer l'adresse IP publique.") write_log("Impossible de recuperer l'adresse IP publique.", log_dir=log_dir)
if __name__ == "__main__":
main()