Today I learned a thing - or 2. Danke schonmal für eure Antworten.
Dokumentation / Minimum Working Example für die Nachwelt:
Ich habe ein test script "reboot" gebaut, das einfach nur einen Reboot durchführen soll.
#!/bin/bash
echo "sudo shutdown -r now"
sudo shutdown -r now
Das Script liegt in /opt/iobroker/. Mein JavaScript lautet:
exec('sudo /opt/iobroker/reboot', function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stdout: ' + error);
});
Über das Kommando
sudo visudo -f /etc/sudoers.d/iobroker
habe ich in /etc/sudoers.d/iobroker folgende neue Zeile ergänzt
iobroker ALL=(ALL) NOPASSWD: /opt/iobroker/reboot
Auf Basis von @ticaki Hinweis, habe ich dem Script noch die Lese-Rechte entfernt (schreiben konnte es schon vorher nicht) mit dem command sudo chmod 751 reboot
pi@iobroker-pi: $ ls -l /opt/iobroker
-rwxr-xr-x+ 1 pi pi 388 Jul 30 10:36 reboot
pi@iobroker-pi: $ sudo chmod 751 /opt/iobroker/reboot
pi@iobroker-pi: $ ls -l /opt/iobroker
-rwxr-x--x+ 1 pi pi 388 Jul 30 10:36 reboot
Ich habe sicherheitshalber iobroker neu gestartet, damit die neuen Einträge auch wirklich neu eingelesen werden.
Nun wird das Skript ausgeführt.
Danke euch!