Script per Autostart

  • Hallo Leute ich bin verzweifelt.

    Google schon seit 3 Stunden rum. Ich möchte das ein Script nach dem Start des Raspi ausgeführt wird.
    Dieses kleine Scrip sendet mir eine E-Mail mit der IP Adresse des Raspis. Mir geht es nicht nur um das Senden der IP nein auch darum wie man beim Start ein Script ausführt.

    Dazu habe ich mein Script in die /etc/rc.local eingetragen mit dem Pfad dazu
    Rufe ich /etc/rc.local in der Konsole auf dann funktioniert alles perfekt. Nur beim start passiert NICHTS....

    Kleiner Nachtrag....
    Ich habe noch ein Skript gemacht wo ich per echo > /home/pi/scripte/txt.txt
    schreibe. Diese habe ich dann auch in die /etc/rc.local eingetragen

    /home/pi/scripte/t.sh &
    /home/pi/scripte/sent_ip.sh &

    Die Datei txt.txt wird nicht erstellt. Rufe ich die /etc/rc.local von Hand in der Konsole auf ist alles ok
    die Datei txt.txt wird erstellt.

    Ich gehe nun davon aus das die rc.local nicht beim start ausgeführt wird. Aber wie bekomme ich das hin
    das meine Scripte ausgeführt werden nachdem der Raspi gestartet ist.


    Ich hoffe ihr könnt mir helfen.[/quote]


    /etc/rc.local

    [code=php]#!/bin/sh
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # Print the IP address

    /home/pi/scripte/sent_ip.sh &


    exit 0
    [/php]


    [b]Mein Script/b]

    [code=php]#!/bin/bash


    ifconfig > /home/pi/scripte/ip.txt
    mutt -s "Test E-Mail mit Anhang einer Datei" mxxxxl@exxxx.de -a /home/pi/scripte/ip.txt <.[/php]

    Einmal editiert, zuletzt von RaspPiHF (13. Februar 2015 um 14:53)

  • 1. Forumsuche nach: crontab ... oder: Autostart
    2. Script ausführbar machen, notfalls direkt an /bin/bash übergeben ( /bin/bash /home/pi/scripte/sent_ip.sh & )
    3. Script manuell ausführen und sicherstellen das es auch wirklich funktioniert
    4. Auch mal einer der anderen Autostart Möglichkeiten probieren

  • Danke erstmal für deine schnelle Antwort.


  • Aber das senden der E-Mail erfolgt nicht.

    Sind die Bedingungen die zum senden einer E-Mail erforderlich sind, zum Zeitpunkt zu dem dein Script (mit rc.local) ausgeführt wird, schon zu 100% vorhanden/erfüllt? Versuch mal mit einem ausführbaren Script, aus dem Verzeichnis:

    Code
    /etc/network/if-up.d


    Du könntest in dein Script auch eine Bedingung (Rückgabewert, ...) einbauen, dass die E-Mail erst dann versendet wird wenn dein Router erreicht werden kann oder ein Ziel im Internet erreichbar ist (z. B. per ping oder gleichwertig):

    Code
    :~$ /bin/ping -c 1 -W 2 heise.de > /dev/null 2>&1;echo $?
    0
    Code
    :~$ /bin/ping -c 1 -W 2 hei4r55ttse.de > /dev/null 2>&1;echo $?
    2

    EDIT:

    Du könnest dein Script, mit z. B. logger auch in die syslog-Datei schreiben lassen, ob das Internet zu Zeitpunkt der Ausführung des Scriptes, schon erreichbar war.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (13. Februar 2015 um 11:11)

  • Wie gesagt: Funktioniert das Script bei manueller Ausführung? Also alles, nicht nur die erste Zeile.


    Ich glaube nämlich das in der 2.Zeile, dort wo die Email verschickt werden soll, am Ende der Zeile ein Fehler ist. Das " < " gehört da eigentlich nicht hin.
    [code=php]#!/bin/bash


    ifconfig > /home/pi/scripte/ip.txt
    mutt -s "Test E-Mail mit Anhang einer Datei" mxxxxl@exxxx.de -a /home/pi/scripte/ip.txt <[/php]

    Deshalb glaub ich dass das Script selbst manuell nicht das tut was es soll.


    Und die nächste Frage wäre warum du überhaupt die Ausgabe von ifconfig verschicken willst? Dich interessiert doch vermutlich nur eine Zeile oder nicht? ..Wenn überhaupt, denn eine LAN IP wird dir via EMail auch nicht viel bringen...

  • Danke erst mal für die Antworten ich werde das heute oder morgen mal testen.

    meigrafd

    Das Script funktioniert wenn ich es mit ./sent_ip.sh aufrufe. Dann sendet er mir eine E-Mail mit dem inhalt der IFCONFIG
    Das <. ist dafür da das mutt die E-Mails sofort versendet ohne im Programmdialog hängen zu bleiben.

    Leider habe ich nicht gesehen das hier im Formum der . (Punkt) nicht mit kopiert wurde aber im Script steht er drin. Habe ich
    schon korrigiert.

    Das Script wird auch per Autostart aufgerufen habe einfach mal mit echo eine Datei erzeugen lassen diese wurde dann
    auch beim booten erzeugt.


    rpi444

    Deine Ansätze lesen sich sehr interessant wie gesagt teste das heute oder morgen mal durch. Das was du schreibst kann man sicherlich auch mal für andere Aufgabe übertragen.


    Ich melde mich hier wieder wenn ich weiß hob es funktioniert hat oder nicht.

    Einmal editiert, zuletzt von RaspPiHF (13. Februar 2015 um 14:59)

  • So ich habe das Problem lösen können.... Ich danke allen die mich auf die richtige Spur gebracht haben.
    Natürlich auch hier die Auflösung.


    Ich habe im Ordner /etc/network/if-up.d ein kleines Script abgelegt mit folgendem Inhalt.

    Bash
    #!/bin/sh -e
    
    
    wget -q -O - http://showip.spamt.net/ | mail -s "Aktuelle IP von meinem Anschluss" meine@e-mailadresse.de
    ifconfig | mail -s "Aktuelle IP von meinem Anschluss" meine@e-mailadresse.de

    Naturlich muss der Versand von E-Mails von der Konsole möglich sein.
    Das wierd hier sehr gut erklärt.

    Einmal editiert, zuletzt von RaspPiHF (15. Februar 2015 um 00:48)

  • Hm... Dein PI ist aber doch bei dir im LAN oder nicht? Der Zustand (up oder down) von eth0 wird sich aber nicht ändern nur weil sich der Router neu einwählt? :s

    Das was du nun gemacht hast funktioniert nur wenn man entweder das LAN-Kabel raus zieht und wieder einsteckt - oder das selbe eben für WLAN ...


    So wie ich deine bisherigen Versuche verstehe, möchtest du eine EMail erhalten sobald sich deine Externe, Internet IP, geändert hat :huh:
    Dann wäre es sinnvoller ein Script zu verwenden, welches regelmäßig die zuletzt bekannte Internet-IP mit der aktuellen vergleicht und bei Unterschied eine EMail verschickt.

    Also im Prinzip sowas wie ein Dynamic-DNS Update Script - mit dem Unterschied das es eine EMail verschickt :huh:

    Wenn dem so ist dann bitte einen neuen Thread mit entsprechender Überschrift erstellen, da das ja nichts mehr mit diesem hier "Script per Autostart" zu tun hätte.

Jetzt mitmachen!

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