Cómo utilizar Triggerhappy deamon para sobrescribir archivos

Cómo utilizar Triggerhappy deamon para sobrescribir archivos

Tengo Rpi4 con Volumeo 2.729 instalado. Utilizo Triggerhappy para ejecutar un script de node.js cuando se presiona el botón del teclado; el script reproducirá la estación de radio por Internet correspondiente:

module.paths.push('/lib/node_modules');
var io=require('socket.io-client');
var socket= io.connect('http://127.0.0.1:3000');

socket.on('connect',function(){
        socket.emit('replaceAndPlay', {"service":"webradio","uri":"http://185.85.28.148:8000"});
});

Además, cuando se presiona un botón simultáneamente con la tecla 'M', Triggerhappy ejecutará el script .js que vinculará la estación que se está reproduciendo actualmente a ese botón; funciona obteniendo el estado del volumen y reemplazando el URI en el script .js (del ejemplo anterior) que está vinculado a ese botón confs.writeFile().

Mi problema es que Triggerhappy no puede sobrescribir archivos .js. Cuando ejecuto este script manualmente desde la terminal, funciona perfectamente.

Logré ejecutar Triggerhappy como root, no ayudó. ¿Cómo puedo hacer que Triggerhappy sobrescriba el archivo o existe una solución más elegante?

EDITAR: Esto es resultado desudo systemctl estado triggerhappy.service -l

● triggerhappy.service - LSB: triggerhappy hotkey daemon
   Loaded: loaded (/etc/init.d/triggerhappy)
   Active: active (running) since Thu 2020-04-16 19:58:25 CEST; 4min 44s ago
  Process: 640 ExecStart=/etc/init.d/triggerhappy start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/triggerhappy.service
           ├─ 698 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
           ├─2415 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
           ├─2416 sh -c node /home/volumio/node-stream/play_uri_1-node.js
           ├─2417 node /home/volumio/node-stream/play_uri_1-node.js
           ├─2636 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
           ├─2637 sh -c node /home/volumio/node-stream/play_uri_2-node.js
           └─2638 node /home/volumio/node-stream/play_uri_2-node.js

No hay entrada sobre Memory.js, que es el script que escribe en play_uri_x-node.js.

Respuesta1

Por defecto triggerhappydebería ejecutarse como nobody. Una solución alternativa es otorgar nobodyel derecho a invocar un comando específico editando su archivo sudo. Pero no debería ser necesario utilizar root, su usuario habitual debería ser suficiente si puede ejecutar el script.

En su configuración triggerhappy, verifique que tenga una ruta de acceso completa a su script.

Por último, pero no menos importante, verifique sus archivos de registro ( syslog, posiblemente otros en /var/log).

información relacionada