Crontab und @ reboot - Mailmeldung soll gesandt werden

L I V E Stammtisch ab 20:30 Uhr im Chat
  • [font="Calibri"]Hallo zusammen,[/font]

    [font="Calibri"]Möchte im Crontab beim Reboot eine Mail erhalten [/font][font="Wingdings"]à[/font][font="Calibri"] geht aber nur als root mit dem Befehl @ reboot.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Habe die etc/crontab editiert: dort steht jetzt:[/font]
    [font="Calibri"]Standardangaben vom Skript[/font]
    [font="Calibri"]LEERZEILE[/font]
    [font="Calibri"]@reboot root /home/pi/Mail.py[/font]
    [font="Calibri"]LEERZEILE[/font]
    [font="Calibri"]#[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Beim Neustart kommt keine Mail. Das Mailscript funktioniert, wenn man es über die Shell aufruft.[/font]
    [font="Calibri"]Frage: Muss das Mail Script in einem bestimmten Ordner liegen oder reicht der angegebene? Als root müsste der Befehl doch Zugriff auf /home/pi haben.[/font]
    [font="Calibri"]Gibt es sonst einen Fehler?[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Wollte dann auch noch eine Datei kopieren – es kommt aber eine Fehlermeldung.[/font]
    [font="Calibri"]Shutil.copy2(„/home/pi/Mail.py“, „/home/pi/bin/Mail.py“)[/font]
    [font="Calibri"]Fehlermeldung: Syntaxfehler beim unerwarteten Wort. – Klingt schräg[/font]
    [font="Calibri"]Wo ist denn hier der Haken?[/font]

    [font="Calibri"]Hat hier jemand einen Tip? Vielen Dank schon mal.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"] [/font]
    [font="Calibri"] [/font]
    [font="Calibri"] [/font]

  • Crontab und @ reboot - Mailmeldung soll gesandt werden? Schau mal ob du hier fündig wirst!

  • Probiers doch mal so:

    Code
    @reboot root /usr/bin/python /home/pi/Mail.py
    Zitat


    Shutil.copy2(„/home/pi/Mail.py“, „/home/pi/bin/Mail.py“)
    Fehlermeldung: Syntaxfehler beim unerwarteten Wort. – Klingt schräg


    Wie lautet denn das unerwartete Wort und hast du die Anführungsstriche wirklich so wie oben dargestellt ?

  • Code
    @reboot  /usr/bin/python /home/pi/Mail.py

    Nö, imho kennt @reboot nicht die Angabe des ausführenden Nutzers, also "root" - hab ich oben schon mal rausgenommen) weg und das Ganze in die root crontab (sudo crontab -e) packen, dann sollte es gehen.

    gruß, STF

  • Nur /etc/crontab bzw. die crontabs in /etc/cron.d/ kennen das zusätzliche, 6. Feld "User", das hat aber nichts mit der verwendeten Zeitangabe in Feldern 1-5 (oder hier "special nickname" @reboot) zu tun.

    Wenn du nichts zu sagen hast, sag einfach nichts.


  • Bitte poste dein script, Ich vermute eine fehlende Shebang

    Hallo dbv,

    das sieht so aus:

    [font="Times New Roman"] [/font][font="Calibri"]1 #!/usr/bin/env python[/font]
    [font="Times New Roman"] [/font][font="Calibri"]2 import smtplib[/font]
    [font="Times New Roman"] [/font][font="Calibri"]3 server = smtplib.SMTP("SMTP Server", 587)[/font]
    [font="Times New Roman"] [/font][font="Calibri"]4 server.starttls()[/font]
    [font="Times New Roman"] [/font][font="Calibri"]5 server.login("MAIL1", "PW")[/font]
    [font="Times New Roman"] [/font][font="Calibri"]6 msg = "TEST Mail Einfach Skript"[/font]
    [font="Times New Roman"] [/font][font="Calibri"]7 server.sendmail("MAIL1", "MAIL2", msg)[/font]
    [font="Times New Roman"] [/font][font="Calibri"]8 server.quit()[/font]
    Automatisch zusammengefügt:


    Probiers doch mal so:

    Code
    @reboot root /usr/bin/python /home/pi/Mail.py


    Wie lautet denn das unerwartete Wort und hast du die Anführungsstriche wirklich so wie oben dargestellt ?

    Hallo Fred0815,

    nach Eingabe der Befehlszeile kommt:
    -bash: Syntaxfehler beim unerwarteten Wort `"/home/pi/Mail.py",'

    Anführungsstriche sind beim Tippen in SSH beide oben und nicht eins unten und eins oben. Das Skript ist im Ordner drin.
    Automatisch zusammengefügt:
    [font="Courier New"]@reboot root /usr/bin/python /home/pi/Mail.py[/font]


    Nur /etc/crontab bzw. die crontabs in /etc/cron.d/ kennen das zusätzliche, 6. Feld "User", das hat aber nichts mit der verwendeten Zeitangabe in Feldern 1-5 (oder hier "special nickname" @reboot) zu tun.

    Hallo LLutz,

    hab im /etc/crontab

    [font="Courier New"]@reboot root /usr/bin/python /home/pi/Mail.py[/font]

    [font="Courier New"]probiert - geht nicht.[/font]

    [font="Courier New"]Wechsel auf[/font]

    [font="Courier New"]sudo crontab - e[/font]
    [font="Courier New"]Einmal mit[/font]
    [font="Courier New"]@reboot root /usr/bin/python /home/pi/Mail.py[/font]

    [font="Courier New"]geht nicht[/font]

    [font="Courier New"]dann[/font]
    [font="Courier New"][font="Courier New"]@reboot /usr/bin/python /home/pi/Mail.py[/font][/font]
    [font="Courier New"]geht auch nicht.[/font]

    Einmal editiert, zuletzt von Raspiuser8716 (28. Juni 2017 um 13:34)

    • Offizieller Beitrag

    Hallo,

    evtl. ist das Netzwerk noch nicht da o.ä. Bau mal eine Pause von 30 Sekunden ein:

    Code
    @reboot root sleep 30; /usr/bin/python /home/pi/Mail.py


    ...und bitte verwende die Code-Tags im Forum!

  • [wuote]
    [font="Courier New"][font="Courier New"]@reboot /usr/bin/python /home/pi/Mail.py[/font][/font]
    [font="Courier New"]geht auch nicht.[/font]
    [/quote]

    Was heißt jetzt geht nicht? Ist die Fehlermeldung weg/anders ? Es könnte durchaus sein, dass du jetzt in einen anderen Klassiker hier gelaufen bist- das Netzwerk ist noch nicht bereit. Entweder du wartest im Skript einige Sekunden oder du aktivierst den Punkt in den Raspi-Einstellungen.

    Gruß, STF

    Edith sagt: Hi Hyle, jetzt haste mich überholt. Grüße von hier nach hier. :)


  • [wuote]
    [font="Courier New"][font="Courier New"]@reboot /usr/bin/python /home/pi/Mail.py[/font][/font]
    [font="Courier New"]geht auch nicht.[/font]

    Was heißt jetzt geht nicht? Ist die Fehlermeldung weg/anders ? Es könnte durchaus sein, dass du jetzt in einen anderen Klassiker hier gelaufen bist- das Netzwerk ist noch nicht bereit. Entweder du wartest im Skript einige Sekunden oder du aktivierst den Punkt in den Raspi-Einstellungen.

    Gruß, STF

    Edith sagt: Hi Hyle, jetzt haste mich überholt. Grüße von hier nach hier. :)
    [/quote]


    Hallo STF,
    es kam nie eine Fehlermeldung, nur keine Mail an. Aber dank deines und hyles Tip funzt es jetzt.

    ABER wichtig für alle, die auch so arbeiten wollen: 30 Sekunden reichen nicht, ich musste auf 60 erhöhen, aber jetzt kommen die Mails wie gewünscht an.

    Thx nochmal.
    Automatisch zusammengefügt:


    Hallo,

    evtl. ist das Netzwerk noch nicht da o.ä. Bau mal eine Pause von 30 Sekunden ein:

    Code
    @reboot root sleep 30; /usr/bin/python /home/pi/Mail.py


    ...und bitte verwende die Code-Tags im Forum!


    Hallo Hyle,

    danke für den Tip! Es lag am Delay wie Du vermutest hast.

    Code-Tags: Jo, werde ich das nächste Mal nehmen.

    Thx

    Einmal editiert, zuletzt von Raspiuser8716 (28. Juni 2017 um 14:41)


  • Hallo,

    funktioniert das Skript, wenn du es als systemd Service Unit ausführst und als Abhängigkeit `After=network.target`angibst?

    Gruß, noisefloor

    Uuuuuiiiiiii, das sind Böhm'sche Dörfer für mich. Ich hab mal im Jahre Schnee mit Basic, DOS und Turbo Pascal gearbeitet. Bin auf den kleinen Bromi aufmerksam geworden und jetzt juckts mich wieder. Muss mich erst mal einarbeiten, speziell die Syntax, Rechte, Zugriffsmöglichkeiten sind für mich da bei Linux speziell.


    Gib mir einen kleinen Tip, wie man systemd Service Unit ausführt und als Abhängigkeit `After=network.target`angibt, dann ich es mal probieren.

    Auf jeden Fall läuft der Reboot inkl Mail mit dem Delay nun problemlos - konnte noch von 60 auf 45 Sekunden runter, aber 30 Sekunden sind dem Pi2B anscheinend zu kurz.

    Gruß
    [font="Calibri"]Raspiuser8716[/font]

  • Servus,


    ... Auf jeden Fall läuft der Reboot inkl Mail mit dem Delay nun problemlos - konnte noch von 60 auf 45 Sekunden runter, aber 30 Sekunden sind dem Pi2B anscheinend zu kurz.

    imho die ungünstigste Lösung.
    Allein wenn der Raspi z.B. durch einen routinemässigen fsck mal länger braucht, klappt's wieder nicht.

    Besser: bau Dein Python-Teil so um, dass Du anfangs wartest, bis Du Deinen Router pingen kannst und schick' dann die mail erst los.

    Noch besser: mach' es so wie von noisefloor vorgschlagen.

    cu,
    -ds-

  • Hallo raspiuser8716,

    statt units zu schreiben, reicht es in Deinem Fall wahrscheinlich, die dafür vorgesehene Einstellung zu aktivieren. Entweder in der Konsole über

    Code
    sudo raspi-config

    dann 3 Boot Options -> B2 Wait for Network at Boot -> JA

    oder über die grafische Oberfläche unter Einstellungen -> Raspberry-Pi-Konfiguration und dann einen Haken bei Auf Netzwerk warten setzen. Das meinte ich in Beitrag #8.

    Gruß, STF

    • Offizieller Beitrag


    danke für den Tip! Es lag am Delay wie Du vermutest hast

    Nee, die Pause war nur Mittel zum Zweck um zu erfahren, ob es am noch nicht gestartetem Netzwerk liegen könnte. Das ist, wie dreamshader schon schrieb, auf die Dauer keine Lösung. Dir wurden ja zwei, drei Wege gezeigt.

    Ich für meinen Teil werde einfach nicht warm mit systemd und bevorzuge die von STF beschriebenen Einstellungen in #13, das ist aber letzten Endes Deine Entscheidung. ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!