[GELÖST] Skript in Cron startet nicht automatisch (crontab)

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

[GELÖST] Skript in Cron startet nicht automatisch (crontab)

Beitrag von StefanB » 28.02.2018, 13:54

Mit Hilfe des sehr guten Beitrags Telegram-Messenger zur Interaktion mit der CCU(2)
habe ich ein shell scrip geschrieben, das alle 15 Sekunden Telegram abfragt um die Alarmfunktion
ein- und ausschalten zu können.

Alles funktioniert prima, lediglich der Autostart über Crontab funktioniert nicht.

Über ssh (root) habe ich:
das Filsystem zum schreiben gemountet,
die crontab geändert.
und die Änderung geprüft.
(Die letzte Zeile der Crontab ist leer)

Code: Alles auswählen

mount -o remount,rw / 
crontab -e
crontab -l 
Folgende Einstellungen habe ich schon ohne Erfolg ausprobiert:

Code: Alles auswählen

@reboot /telegram.sh &>/dev/null 2>&1
@reboot /telegram.sh >/dev/null 2>&1
@reboot root /telegram.sh >/dev/null 2>&1
Nach dem Neustart sieht es aus als ob das Skript gar nicht läuft.

Code: Alles auswählen

ps aux | grep telegram
Kann hier jemand helfen?
Zuletzt geändert von jmaus am 10.03.2018, 16:01, insgesamt 3-mal geändert.
Grund: verschoben aus HomeMatic Addons ‹ Sonstige

lesiflo
Beiträge: 112
Registriert: 03.02.2017, 10:01

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von lesiflo » 28.02.2018, 14:05

Wie sieht denn deine crontab aus? -> crontab -l
Läuft der cron-deamon? -> ps -ef | grep cron

StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von StefanB » 01.03.2018, 09:36

Der Inhalt meiner crontab:

Code: Alles auswählen

# crontab -l
*/30 * * * * /bin/SetInterfaceClock 127.0.0.1:2001
0 * * * * /bin/setHWClock.sh
0 4 * * * /usr/sbin/logrotate -f /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
@reboot /telegram.sh &>/dev/null 2>&1

crond läuft:

Code: Alles auswählen

# ps -ef | grep cron
  208 root       0:01 /usr/sbin/crond -f
17561 root       0:00 grep cron

StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von StefanB » 04.03.2018, 17:00

Hab das ganze nochmal mit einer yahm Installation probiert.
Hier funktioniert zwar der Autostart meines skripts per crontab, allerdings auf dem raspbian Bertriebssystem, nicht auf der CCU.

Leider funktioniert dannn der curl Aufruf in meinem Skript nicht.

Code: Alles auswählen

      curl http://192.168.2.119:8181/Text.exe?Antwort=dom.GetObject%28%22Alarm0%22%29.DPByHssDP%28%22PRESS_SHORT%22%29.State%28true%29; >/dev/null 2>&1
Kann mir hier jemand weiterhelfen?

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von jmaus » 04.03.2018, 17:09

StefanB hat geschrieben: Alles funktioniert prima, lediglich der Autostart über Crontab funktioniert nicht.

Über ssh (root) habe ich:
das Filsystem zum schreiben gemountet,
die crontab geändert.
und die Änderung geprüft.
(Die letzte Zeile der Crontab ist leer)

Code: Alles auswählen

mount -o remount,rw / 
crontab -e
crontab -l 
Unter RaspberryMatic bzw. einer CCU2 brauchst du kein "mount -o remount,rw /" machen um die crontab zu ändern. Die crontab liegt immer im beschreibbaren Bereich unter /usr/local und wird somit z.B. auch von den Backuproutinen erfasst.
StefanB hat geschrieben: Folgende Einstellungen habe ich schon ohne Erfolg ausprobiert:

Code: Alles auswählen

@reboot /telegram.sh &>/dev/null 2>&1
@reboot /telegram.sh >/dev/null 2>&1
@reboot root /telegram.sh >/dev/null 2>&1
Was sollen das bitte für Aufrufe sein? Versteh nicht was das "@reboot" bedeuten sollen. So sehen crontab eintrage auf jedenfall definitiv nicht aus – zumindest nicht mit dem cron daemon der bei busybox bzw. buildroot dabei ist.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von StefanB » 05.03.2018, 10:29

@reboot bedeutet einmaliges Ausführen bei Systemstart.
War mir nicht klar, dass es cron Versionen gibt, bei denen das nicht funktioniert.

Danke für den Hinweis. Jetzt weiß ich wenigstens, warum das nicht läuft.

Eine weitere Möglichkeit ist der Start mit /etc/rc.local.
Diese Datei ist allerdings auch nicht vorhanden, der entsprechende Dienst wird wahrscheinlich auch nicht gestartet.

Alternative wäre, das Skript minütlich mit cron zu starten und jeweis mehrfach auszuführen.

init.d ist auch eine Möglichkeit, sieht aber ziemlich kompliziert aus.

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von jmaus » 05.03.2018, 11:02

StefanB hat geschrieben: Eine weitere Möglichkeit ist der Start mit /etc/rc.local.
Diese Datei ist allerdings auch nicht vorhanden, der entsprechende Dienst wird wahrscheinlich auch nicht gestartet.
Unter RaspberryMatic bzw. einer CCU2 hast du stattdessen die Möglichkeit /usr/local/etc/rc.local zu verwenden. Entsprechend wird dieser Skript dann auch im Backup mit erfasst und bei einem Restore wiederhergestellt. Allerdings solltest du genau wissen was du wie in diesem Skript machst denn du kannst dir da nicht nur das gesamte System zerschiessen sondern auch dafür sorgen das ggf. das System nicht mehr korrekt hochfährt.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von StefanB » 10.03.2018, 15:55

Vielen Dank für die Hilfe.
Genau das war mein Problem.
Jetzt läuft alles wie gewünscht.

Hier ist das Skript:

Code: Alles auswählen

#!/bin/sh
# /usr/local/telegram.sh
# Skript fragt neueste Nachricht in einer Telegram Gruppe ab
# Falls entsprechende Codes enthalten sind wird die Alarmanlage geschaltet
# unscharf - intern scharf - extern scharf
# autostart funktioniert mit rc.local
# allerdings in /usr/local/etc/rc.local
# /telegram.sh >/dev/null 2>&1  &
#
UPDATE_ID_ALT=0
export UPDATE_ID_ALT
UPDATE_ID=0
CHATID=""
export CHATID
CHATID_ERLAUBT=999999999   # Hier Chat-ID der Telegram Gruppe ohne Minus
export CHATID_ERLAUBT      
BOT="999999999:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # Hier Bot-API eintragen
CODE_UNSCHARF="123456"   # hier eigene Codes eintagen
CODE_INTERN_SCHARF="567890"
CODE_EXTERN_SCHARF="901234"


while true
do
  TEXT=$(curl -s -X POST https://api.telegram.org/bot$BOT/getUpdates)
  echo "-----------START------------"
  echo $TEXT
  echo
  TEXT=${TEXT##*"update_id\":"}
  # schneidet bis letztes Vorkommen von update_id ab
  echo "TEXT:"
  echo $TEXT
  echo

  CHATID=${TEXT##*":-"}
  # schneidet vorne bis letztes Vorkommen von chat":{id": ab
  echo CHATID:
  echo $CHATID
  echo
  CHATID=$(echo $CHATID | cut -f1 -d",")
  # schneidet hinten ab Komma ab
  echo CHATID:
  echo $CHATID
  echo

  if [ "$CHATID" = "$CHATID_ERLAUBT" ]
    then
      UPDATE_ID=$(echo $TEXT | cut -f1 -d",")
      # schneidet hinten ab Komma ab

  if [ "$UPDATE_ID" -gt "$UPDATE_ID_ALT" ]
    then
    echo "Neue Nachricht"
    UPDATE_ID_ALT=$UPDATE_ID

    TEXT=${TEXT##*"text"}

    if echo $TEXT | grep $CODE_UNSCHARF;
    then
      curl http://127.0.0.1:8181/Text.exe?Antwort=dom.GetObject%28%22Alarm0%22%29.DPByHssDP%28%22PRESS_SHORT%22%29.State%28true%29; >/dev/null 2>&1
      echo "Alarm0 gefunden"

    elif echo $TEXT | grep $CODE_INTERN_SCHARF;
    then
      curl http://127.0.0.1:8181/Text.exe?Antwort=dom.GetObject%28%22Alarm1%22%29.DPByHssDP%28%22PRESS_SHORT%22%29.State%28true%29; >/dev/null 2>&1

    elif echo $TEXT | grep $CODE_EXTERN_SCHARF;
    then
      curl http://127.0.0.1:8181/Text.exe?Antwort=dom.GetObject%28%22Alarm2%22%29.DPByHssDP%28%22PRESS_SHORT%22%29.State%28true%29; >/dev/null 2>&1

    fi
    fi
  fi
  sleep 5
done

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Homematic-Raspi: Skript startet nicht automatisch (cront

Beitrag von jmaus » 10.03.2018, 16:00

StefanB hat geschrieben: Jetzt läuft alles wie gewünscht.

Hier ist das Skript:
Alles klar, danke für die Rückmeldung. Allerdings ist vorsichtig damit geboten wie du das hier machst. Ich kann mir vorstellen telegram wird das nicht lange mögen das du alle 5 Sekunden 24h/7d auf deren API zugreifst. Würde mich nicht wundern wenn die dich dann nach einer gewissen Zeit sperren um ihr Platform zu schützen. Muss allerdings nicht der Fall sein – nur damit du es im Hinterkopf behält wenn mal was nicht geht...
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

StefanB
Beiträge: 12
Registriert: 28.02.2018, 11:28

Re: [GELÖST] Skript in Cron startet nicht automatisch (cront

Beitrag von StefanB » 11.03.2018, 18:58

Das könnte allerdings sein. Danke für die Info.

Antworten

Zurück zu „RaspberryMatic“