So verwenden Sie den Triggerhappy-Daemon zum Überschreiben von Dateien

So verwenden Sie den Triggerhappy-Daemon zum Überschreiben von Dateien

Ich habe Rpi4 mit installiertem Volumio 2.729. Ich verwende Triggerhappy, um ein node.js-Skript auszuführen, wenn eine Taste auf der Tastatur gedrückt wird. Das Skript spielt den entsprechenden Internetradiosender ab:

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

Wenn eine Taste gleichzeitig mit der Taste „M“ gedrückt wird, führt Triggerhappy ein JS-Skript aus, das den aktuell wiedergegebenen Sender an diese Taste bindet. Dies funktioniert, indem der Status von „volumio“ abgerufen und die URI im JS-Skript (aus dem obigen Beispiel), die an diese Taste gebunden ist, durch ersetzt wird.fs.writeFile().

Mein Problem ist, dass Triggerhappy .js-Dateien nicht überschreiben kann. Wenn ich dieses Skript manuell vom Terminal aus ausführe, funktioniert es perfekt.

Ich habe es geschafft, Triggerhappy als Root auszuführen, aber es hat nicht geholfen. Wie kann ich Triggerhappy dazu bringen, Dateien zu überschreiben, oder gibt es eine elegantere Lösung?

EDIT: Dies ist die Ausgabe vonsudo 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

Kein Eintrag über memory.js, das Skript, das in play_uri_x-node.js schreibt

Antwort1

Standardmäßig triggerhappysollte es als ausgeführt werden nobody. Eine Problemumgehung besteht darin, nobodydas Recht zum Aufrufen eines bestimmten Befehls zu erteilen, indem Sie Ihre Sudo-Datei bearbeiten. Es sollte jedoch nicht notwendig sein, root zu verwenden. Ihr normaler Benutzer sollte ausreichen, wenn er das Skript ausführen kann.

Überprüfen Sie in Ihrer Triggerhappy-Konfiguration, ob Sie einen vollständig qualifizierten Pfad zu Ihrem Skript haben.

Überprüfen Sie zu guter Letzt Ihre Protokolldateien ( syslog, möglicherweise weitere in /var/log).

verwandte Informationen