diff --git a/src/opengnsys/modules/server/ogAdmClient/__init__.py b/src/opengnsys/modules/server/ogAdmClient/__init__.py index c9e0344..74d7716 100644 --- a/src/opengnsys/modules/server/ogAdmClient/__init__.py +++ b/src/opengnsys/modules/server/ogAdmClient/__init__.py @@ -316,7 +316,7 @@ class ogAdmClientWorker (ogLiveWorker): } return { 'nfn': 'RESPUESTA_status', - 'mac': '12:23:34:45:56:67', + 'mac': self.mac, 'ip': self.IPlocal, 'cfg': cfg, 'threads': thr_status, diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index d221f1b..694eb8e 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -200,6 +200,15 @@ class ogLiveWorker(ServerWorker): logger.info ('local IP is "{}"'.format (self.IPlocal)) return True + def tomaMAClocal (self): + ## tomaIPlocal() calls interfaceAdm('getIpAddress') + ## getIpAddress runs 'ip addr show' and returns the IP address of every network interface except "lo" + ## (ie. breaks badly if there's more than one network interface) + ## let's make the same assumptions here + mac = subprocess.run (["ip -json link show |jq -r '.[] |select (.ifname != \"lo\") |.address'"], shell=True, capture_output=True, text=True) + self.mac = mac.stdout.strip() + return True + def enviaMensajeServidor (self, path, obj={}): obj['iph'] = self.IPlocal ## Ip del ordenador obj['ido'] = self.idordenador ## Identificador del ordenador @@ -272,6 +281,7 @@ class ogLiveWorker(ServerWorker): self.pathinterface = None self.IPlocal = None ## Ip del ordenador + self.mac = None ## MAC del ordenador self.idordenador = None ## Identificador del ordenador self.nombreordenador = None ## Nombre del ordenador self.cache = None @@ -294,6 +304,9 @@ class ogLiveWorker(ServerWorker): if not self.tomaIPlocal(): raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo') + if not self.tomaMAClocal(): + raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo') + threading.Thread (name='monitoring_thread', target=self.mon, daemon=True).start() def _long_running_job (self, name, f, args):