
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, triggerhappy
deve ser executado como nobody
. Uma solução alternativa é conceder nobody
o 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
).