Skip to main content
Topic: No me funciona servicio dispatcher de NetworkManager (Read 121 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

No me funciona servicio dispatcher de NetworkManager

Hola gente
Intento usar un script en el directorio /etc/NetworkManager/dispatcher.d (dado permiso de ejecucion y propietario root) pero ponga lo que ponga no se ejecuta NUNCA. De momento sólo tengo puesto algo muy sencillo:
Code: [Select]
#! /bin/bash
DEVICE=${1}
STATE=${2}
kdialog  --title "Mensaje Dispatcher" --msgbox "Interface: $DEVICE   Evento: $STATE"
Si lo ejecuto directamente pasándole dos parametros (o no ) funciona perfectamente. La idea es detectar un evento de conexión a una red via wifi para luego hacer algo
Tengo KDE Plasma , open-rc como init y uso X11, no Wayland
¿ Hay alguna manera de saber si el servicio dispatcher está corriendo, o se dá por supuesto al estar arrancado el Network Manager ?
El comando rc-service NetworkManager-dispatcher status indica que ese servicio no existe.
El comando rc-service NetworkManager status dice  que el servicio está arrancado

Otra cosa ¿ donde se guardan los logs del NetworkManager ? He mirado en /var/log y aparecen ficheros syslog.log.1, syslog.log.2, etc, pero vacios, de 0 bytes. Y pasa lo mismo con los ficheros errors.log, everything.log, messages.log y user.log. El status de syslog-ng indica started

---------ACTUALIZACION------------
El servicio dispatcher de NetworkManager funciona correctamente sin necesidad de lanzarlo como servicio auxiliar; vamos, que está integrado en el propio servicio NetworkManager. El fallo de mi script estaba en la linea del kdialog. El problema es que el script se ejecuta como root y no sé porqué da errores si usas kdialog o si usas notify-send con la intención de que te avise en el entorno gráfico de que se ejecutó el comando que se quería lanzar, en mi caso ntpdate (se produce un desagradable cambio de hora según use  Windows 10, Porteus o Artix, no sé en qué orden. Este código me funciona:

Code: [Select]
DEVICE=${1}
STATE=${2}
if [[ "$STATE" == "connectivity-change" && "$CONNECTIVITY_STATE" == "FULL" ]]; then
          ntpdate ntp.roa.es >>/home/usuario/dispatcher.log
          # uso un fichero para comprobar la salida correcta de ntpdate, ya que kdialog y notify-send dan errores
fi

He intentado usar los comandos runuser y su para que me ejecute kdialog o notify-send como mi usuario normal, pero sigue dando error. Sin embargo no obtengo errores cuando es mi usuario no-root el que los ejecuta directamente.
Si como root hago kdialog "HOLA", (previamente le indico export DISPLAY=:0 porque necesita esa variable) me da estas lineas de error:
Authorization required, but no authorization protocol specified
qt.qpa.xcb: could not connect to display :0
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix thisproblem.
Available platform plugins are: linuxfb, xcb, minimal, offscreen, vkkhrdisplay, wayland, eglfs, minimalegl, wayland-egl, vnc.
Abortado


Ese valor de DISPLAY es el mismo que tiene mi usuario normal, y el mismo comando kdialog funciona bien con ese usuario. No entiendo porqué root no puede ejecutarlo, porque de esa manera, los scripts ejecutados como root (como los que ejecuta el servicio dispatcher de NetworkManager) no podrán avisar al usuario normal de algún resultado mientras éste está usando el entorno gráfico, me refiero a que emerja una notificación o ventana.
Pongo más info. Si desde una shell root pongo su usuario -c "kdialog 'hola'" obtengo  el mismo chorreo de errores que he puesto un poco más arriba
Si desde la misma shell ahora pongo su usuario -c "notify-send 'hola'" obtengo estos errores:
Error al lanzar («spawn») el comando «dbus-launch --autolaunch=541d1cd601e89855f5ad86ef65c67aab --binary-syntax --close-stderr»: El proceso hijo terminó con el código 1
Si ahora pongo runuser usuario /usr/bin/notify-send "hola" , extrañamente me dice que no se puede ejecutar el fichero binario, y tiene permiso rx en other
El mismo error sale si uso kdialog en la linea anterior, y también los permisos son rx en other
Salgo de la shell root y vuelvo a la shell de mi usuario y ejecuto tanto notify-send "HOLAAA" como kdialog --pasivepopup "HOLAAA" ó kdialog --msgbox "HOLAAA" y funciona perfecto.
¿ Alguna idea ?