CPU-Temperatur per E-Mail

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich suchte erfolglos eine Anleitung, die mir ein Mail zuschicken lässt mit der Temperatur der CPU (und wenn möglich auch von der GPU). Ich konnte schon eine cputemp.php im Verzeichnis /var/www erstellen, so sieht's aus:

    PHP
    <?php
    exec("cat /sys/class/thermal/thermal_zone0/temp",$cputemp);
    $cputemp = $cputemp[0] / 1000;
    echo $cputemp;
    ?>

    Damit kann man die Temperatur online sehen, hier auf meinem Server: http://10.0.1.15/cpu.php (ist so tief weil ich ein Lüfter habe).

    Jetzt suche ich das gleiche, allerdings zum E-Mail versenden (alle 6 Stunden). Kriegt man das hin? Wenn ja, wie lautet der Code?

    Wäre schön wenn ihr mir helfen könntet!

    Einmal editiert, zuletzt von cocouna (11. August 2013 um 18:40)

  • EMail veschicken über PHP ist soweit ich weiss etwas umständlicher, da würde man mehrere Dateien benötigen (class.phpmailer.php , class.pop3.php und class.smtp.php sowie das Script ansich zum verarbeiten/abschicken)

    Das könnte man mit einem Bash Script einfacher lösen und das packst du dann in die crontab zum regelmässigen verschicken..

    Benötigte Pakete installieren:

    Code
    apt-get install bc sendEmail

    Wer SSL / TLS nutzen möchte benötigt ausserdem folgende Pakete:

    Code
    apt-get install libnet-ssleay-perl libio-socket-ssl-perl

    Das Script (zB /bin/email_cgtemp.sh):


    Dort musst du die Maileinstellungen deinen Bedürfnissen anpassen

    Script ausführbar machen:

    Code
    chmod +x /bin/email_cgtemp.sh

    Testen ob es so funktioniert wie es soll:

    Code
    /bin/email_cgtemp.sh

    Zum Eintragen in die crontab des Benutzers kannst du einmalig festlegen mit welchem Editor die crontab bearbeitet werden soll (standard wäre "vi"):

    Code
    export EDITOR=nano


    In die crontab eintragen:


    ..damit wird das Script jeden Tag um 06:00 Uhr ausgeführt..

    Wenn du es alle 6 Stunden haben möchtest sähe der Crontabeintrag so aus:

    Code
    0 */6 * * *	/bin/email_cgtemp.sh >/dev/null 2>&1


    Zum Anzeigen der wichtigsten Daten über den Webserver würde ich dir meine cpu.php empfehlen:
    /var/www/cpu.php

    Das speichert auch die maximale CPU Temperatur sowie Frequence, solange der Browser geöffnet ist ;)

  • Danke, jetzt komme ich aber bei der Ausführung von /bin/email_cgtemp.sh nicht weiter:


    Aug 11 17:14:34 raspberrypi sendEmail[5504]: NOTICE => Authentication not supported by the remote SMTP server!
    Aug 11 17:14:34 raspberrypi sendEmail[5504]: ERROR => Received: 530 5.7. 0 Must issue a STARTTLS command first. d8sm35848005eeh.8 - gsmtp

    Ich benutze GMail.

  • Das ist nur ne Einstellungssache - lies mal die Fehlermeldung: Must issue a STARTTLS command first.

    Der Anbieter verlangt also zur Anmeldung, dass TLS verwendet wird

    Stell in dem Script also einfach SMTPTLS='1' ein und dann sollte das funktionieren ;)

  • Poste mal bitte deine SMTPSERVER Einstellung die du aktuell im Script nutzt


    /EDIT: Ich glaub ich hab den Grund gefunden, du benötigst noch folgende Pakete:

    Code
    apt-get install libnet-ssleay-perl libio-socket-ssl-perl
  • Code
    SMTPSERVER='smtp.gmail.com:465'
    
    
    oder 
    
    
    SMTPSERVER='smtp.gmail.com:587'


    alles von hier: http://www.patshaping.de/hilfen_ta/pop3_smtp.htm

    Code
    root@raspberrypi:/home/pi# apt-get install libnet-ssleay-perl libio-socket-ssl-perl
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    libio-socket-ssl-perl is already the newest version.
    libio-socket-ssl-perl set to manually installed.
    libnet-ssleay-perl is already the newest version.
    libnet-ssleay-perl set to manually installed.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

    Einmal editiert, zuletzt von cocouna (11. August 2013 um 18:30)

  • Hm das scheint ein allg. Debian bezogenes Problem zu sein: http://raspberrypi.stackexchange.com/questions/2118/sendemail-failure

    Fix:

    Code
    nano /usr/share/perl5/IO/Socket/SSL.pm

    Die Zeile

    Code
    m{^(!?)(?SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i


    ändern in:

    Code
    m{^(!?)(?SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
  • Hm komisch..

    Versuch mal folgendes:

    Code
    nano /usr/bin/sendemail

    Nach der Zeile ## Start TLS if possible suchen und die Zeile:

    Code
    if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {

    ändern in:

    Code
    if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3')) {

  • EMail veschicken über PHP ist soweit ich weiss etwas umständlicher, da würde man mehrere Dateien benötigen (class.phpmailer.php , class.pop3.php und class.smtp.php sowie das Script ansich zum verarbeiten/abschicken)

    Man kann es auch umständlich machen :lol: Ne Mail über PHP zu verschicken geht ohne Probleme.
    [code=php]bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )[/php]
    http://php.net/manual/de/function.mail.php[/font]

  • Hallo

    Ich als grober Kerl würde die Temperatur in eine Datei schreiben.

    Dann diese Datei im Prinzip per ssmtp versenden.

    Mehr möchte ich dazu nicht sagen.

    Nach meiner Erfahrung will das aber hier niemand wissen :) Wozu gibt es PHP und Phyton und C++ und MySQL und all die schönen Sachen, die muss auch jemand benutzen.

    Ich habe übrigens keine Ahnung wie ich an die CPU-Temperatur rankomme ... und ich will das eigentlich auch nicht.

    Wenn ich mal richtig Langeweile habe seh ich mir das mal an.

    Aber ssmtp ist echt ne coole Sache für wiederkehrende Mails, sollte sich jeder mal reintun.

    Bye

  • Ssmtp als standardmailer eintragen und einfach mit einer Zeile code aus PHP senden. Wieso also immer so kompliziert?

  • Ein weitere Lösungsweg der auch problemlos funktioniert:

    /var/www/cgtempmailer.php

    https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.6 laden und in /var/www/ entpacken. ggf die "require_once" Zeile im PHP Script anpassen..

    crontab -e Eintrag:

    Code
    0 */6 * * *    php -f /var/www/cgtempmailer.php >/dev/null 2>&1


    Damit die GPU Temperatur auch ausgelesen werden kann optional /etc/sudoers bearbeiten und

    Code
    www-data ALL=NOPASSWD:/opt/vc/bin/vcgencmd


    eintragen


    PS: Der nächste der sowas ähnliches abgibt von wegen "wieso so kompliziert" der soll sich erstmal die Mühe machen und eine vollständige Lösung posten bevor er hier grosse Töne spuckt!


  • PS: Der nächste der sowas ähnliches abgibt von wegen "wieso so kompliziert" der soll sich erstmal die Mühe machen und eine vollständige Lösung posten bevor er hier grosse Töne spuckt!

    Das sollte keinesfalls so rüberkommen, ich wollte dir nur sagen das man für das versenden einer normalen Mail keine großen Klassen braucht. :)


  • Alles gemacht und ohne Fehlermeldung. Jetzt warte ich auf das Mail :)

    Einmal editiert, zuletzt von cocouna (12. August 2013 um 11:47)

  • Hast du auch eine Ausgabe kriegt von wegen "Mail send!" ?

    Die EMail kam bei mir gestern keine 2 Sekunden später an, war also wirklich super schnell da :)

    Ansonsten sicherstellen das die Einstellungen in dem PHP korrekt sind, habe gestern Abend darauf verzichtet dafür extra Variablen einzufügen

    Absender:
    $mail->SetFrom("example@gmail.com");

    Empfänger:
    $mail->AddAddress("email@gmail.com");


    Wenn das trotzdem nicht will kannst du auch /var/log/apache2/error.log kontrollieren ob da vielleicht etwas steht

Jetzt mitmachen!

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