Como usar o Triggerhappy deamon para sobrescrever arquivos

Como usar o Triggerhappy deamon para sobrescrever arquivos

Tenho Rpi4 com Volumio 2.729 instalado. Eu uso o Triggerhappy para executar um script node.js quando o botão do teclado é pressionado - o script reproduzirá a estação de rádio da Internet correspondente:

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"});
});

Além disso, quando um botão é pressionado simultaneamente com a tecla 'M', o Triggerhappy executará o script .js que vinculará a estação atualmente em reprodução a esse botão - ele funciona obtendo o status do volumio e substituindo o URI no script .js (do exemplo acima) que está vinculado a esse botão comfs.writeFile().

Meu problema é que o Triggerhappy não pode sobrescrever arquivos .js. Quando executo este script manualmente no terminal, ele funciona perfeitamente.

Consegui rodar o Triggerhappy como root, não adiantou. Como posso fazer com que o arquivo sobrescreva o Triggerhappy ou existe uma solução mais elegante?

EDIT: Esta é a saída desudo systemctl status 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

Nenhuma entrada sobre memory.js, que é o script que escreve em play_uri_x-node.js

Responder1

Por padrão, triggerhappydeve ser executado como nobody. Uma solução alternativa é conceder nobodyo direito de invocar um comando específico editando seu arquivo sudo. Mas não deve ser necessário usar root, seu usuário regular deve ser suficiente se puder executar o script.

Na configuração do triggerhappy, verifique se você possui um caminho totalmente qualificado para o seu script.

Por último, mas não menos importante, verifique seus arquivos de log ( syslog, possivelmente outros em /var/log).

informação relacionada