NEWS
Frage zu EXEC-Befehlen
-
Hallo,
ich möchte einige Terminal-Befehle gern über die VIS-Oberfläche auslösen können.
Z.B. kann ich im Terminal ein Programm zum erstellen eines Backups der SD-Karte starten, das ioBroker stoppt, ein SD-Image erstellt und dann wieder ioBroker startet.
Der Terminalbefehl lautet:sudo /home/pi/skripte/IMGbackup.sh
Klappt prima.
Dann habe ich einen Datenpunkt pi_PowerOff angelegt. Wenn der auf wahr geschaltet wird, wird der EXEC-Befehl "sudo poweroff" ausgeführt und der Pi runter gefahren.
Klappt wunderbar.Gleiches Vorgehen mit dem EXEC-Befehl "sudo /home/pi/skripte/IMGbackup.sh"
bewirkt aber keine Reaktion.
Kann ich mit dem EXEK-Befehl nur Systembefehle auslösen und nicht eigene .sh-Programme starten? Oder muss das Programm anders definiert sein?Viele Grüße DocAdams
-
@docadams sagte in Frage zu EXEC-Befehlen:
sudo /home/pi/skripte/IMGbackup.sh
Wie sehen die Rechte an dem Skript aus?
Wie sieht das skript selber aus?
Führ das mal aus dem blockly mitsh /home/pi/skripte/IMGbackup.sh
aus.
-
@thomas-braun
Eigentlich gehört das Programm pi/pi.
Ich habe es mal auf root/root gesetzt, da jetzt sudo fehlt.
Aber auch "sh /home/pi/skripte/IMGbackup.sh" bewirkt nichts.
Die Rechte lauten 100755Die ersten Zeilen lauten
#!/bin/bash # by strobelstefan.org # 2019-10-23 # Version: 2.0 # https://strobelstefan.org/?p=5985 # # This script creates a full clone of your Raspberry Pi´s SD card. # # der zweite Stick muss als /media/pishrink eingebunden sein #######################vr # Storage device as defined in your /etc/fstab. ################################### # Define Variables ################################### mountpoint='/media/pishrink/' # Path were the image of your SD card should be saved to STORAGEPATH="/media/pishrink/imagebackup" # Image name IMAGENAME="ioB" #Log File location and name LOGFILE="/var/log/"$HOSTNAME_${IMAGENAME}_"backup-image.log" echo $(date +%Y-%m-%d_%H-%M-%S) "############## Programm-START ##################" >> ${LOGFILE} ...
Bis hierhin ist noch nichts Kritisches, aber es erscheint kein Eintrag im Log. Das Programm wird also nicht gestartet und bricht dann ab.
PS.
Die Intelligenz des Programms stammt nicht von mir -
@docadams sagte in Frage zu EXEC-Befehlen:
root/root gesetzt
Schieb das nach /home/iobroker und gib dem iobroker auch die Rechte am Skript.
Davon abgesehen halte ich full clones auch für entbehrlich. Backup des ioBrokers reicht eigentlich aus.
-
@thomas-braun
Leider kein Erfolg, weder mit sh /home/iobroker.... noch mit sudo /home/iobriker...
Rechte sind iobroker/iobrokerVor langer Zeit hatte es mir mal eine SD zerschossen. Da die History-Daten auf einem angeschlossenen Stick lagern, war die Wiederherstellung schnell erledigt. Da noch ein paar andere Programme laufen (MotionEye, Phoscon, OWFS, Parser).
Auch hatte ich mal ein Problem mit einem node-red-Update, das ich am Ende nur so lösen konnte. Ich mache ja solche Sicherungen auch recht selten. -
Möglich, dass /home/iobroker noch in die /etc/sudoers.d/iobroker eingetragen werden muss.
-
@thomas-braun sagte in Frage zu EXEC-Befehlen:
/home/iobroker noch in die /etc/sudoers.d/iobroker eingetragen werden muss.
Nicht /home/iobroker, sonder der komplette Pfad zum Skript, wenn dieses unbedingt per sudo ausgeführt werden muss.
-
@alcalzone Stimmt, ist sinnvoll. Die anderen Dinger sind ja auch per komplettem Pfad angelegt.