Mehrere PIs - Netzwerküberschneidung?

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

    Ich habe mir neulich ein zweites Raspberry angeschafft und möchte
    dieses auch gleichzeitig mit meinem anderen Raspberry betreiben.

    Auf beiden PIs laufen Programme, die an gewissen Punkten Mails verschicken.
    Ich logge mich hierzu mit dem PI auf meinen gmail-Account ein und versende die Mails.

    Seit ich das zweite PI am Netzwerk hängen habe, funktioniert das aber leider nicht mehr.
    Anscheinend beeinflussen sich die PIs gegenseitig irgendwie...
    Den Hostnamen hab ich bereits geändert - funktioniert trotzdem nicht.

    Die Fehlermeldung, die ich beim senden der Mail bekomme, lautet wie folgt:

    Traceback (most recent call last):
    File "Programm", line 1049, in <module>
    sys.exit(main())
    File "Programm", line 1044, in main
    Mail.sendMail("Warning!!!\nCycle interrupted - Test aborted!")
    File "Programm", line 44, in sendMail
    smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
    File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
    File "/usr/lib/python2.7/smtplib.py", line 309, in connect
    self.sock = self._get_socket(host, port, self.timeout)
    File "/usr/lib/python2.7/smtplib.py", line 284, in _get_socket
    return socket.create_connection((port, host), timeout)
    File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
    socket.error: [Errno 97] Address family not supported by protocol


    Könnt ihr mir bitte weiterhelfen?

    Liebe Grüße,
    Peter

  • Hallo Peter,

    und willkommen im Forum!
    Ich gehe davon aus, dass:

    • jeder RasPi eine eigene IP zugewiesen bekommen hat (entschuldige dass ich frage, schon erlebt ...)
    • sich deine RasPis lediglich kurzzeitig zum Senden an deinem Account anmelden (und nicht etwa wie bei einem normalen Mailclient auch noch dauerhaft per POP3 angemeldet sind <= das geht zumindest bei POP3 nicht)
    • es funktioniert, wenn du immer nur wechselseitig einen anschließt.


    Melde dich mal mit einem Gerät an, und versende dann (mit einem Linuxrechner) auf der Konsole per Hand eine weitere Mail. Solltest du eine WinDOSe benutzen, dann eben mit einem Mailclient. Was passiert da?

    Zitat


    Mail.sendMail("Warning!!!\nCycle interrupted - Test aborted!")


    Zu viele Sendeversuche? Wie oft sollen die denn senden? (Ich kenne da die Möglichkeiten von gmail nicht, also wie viele Sendungen pro Zeit zugelassen sind.)


    Zitat


    in connect
    self.sock = self._get_socket(host, port, self.timeout)


    Vlt. bemerkt er, dass ein und das selbe Konto 2x genutzt werden soll? => anderes/weiteres Mailkonto verwenden?


    Welches Programm auf dem RasPi nutzt du überhaupt zum Senden?

    Zitat


    Netzwerküberschneidung?


    Nö, du kannst jeder verfügbaren (für Clients nutzbaren) IP deines privaten Netzbereiches einen Client verpassen und Mails empfangen und versenden. Nur eben nicht alle über das gleiche Mailkonto. Anmeldung zum Empfangen per POP3 + gleiches Konto geht nicht, mit IMAP schon.

    MfG Peter


  • ....Mails empfangen und versenden. Nur eben nicht alle über das gleiche Mailkonto. Anmeldung zum Empfangen per POP3 + gleiches Konto geht nicht, mit IMAP schon.
    MfG Peter

    sicher ?

    ich vergesse ab und an schon mal das ich mit 2 winrechner und allen Konten gleich eingelockt bin und beide outlook express aktiv sind, allerdings habe ich die Mailabfrage auf 30 Minuten gesetzt. Da sind auch pop3 Konten darunter und Fehler gibt es sehr selten oder sie fallen mir nie auf weil sie beim nächsten Aufruf wieder genug Abstand hatten, einige Konten erlauben als kleinstes Abfrageintervall nur minimal 15 Minuten !
    Deswegen auch meine 30 Minutenintervalle.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo jar,

    klar, mit entsprechend großem Abrufintervall kannst du das schon aushebeln. Und wie du schon geschrieben hast, "... Fehler gibt es sehr selten oder sie fallen mir nie auf weil ...".
    Mache mal einen conn per telnet zu irgend einem PO3-Server und dann warte einfach mal ab, wann der Server dich entlich in den Timeout laufen lässt und damit die Verbindung beendet. (Eine Anleitung dafür habe ich in diesem Beitrag im Thunderbird-Forum beschrieben.)
    Dann mach das noch einmal und melde dich per Konsole mit Benutzername und Passeort bei diesem Server an. Und dann mach schnell eine zweite Konsole auf, und wiederhole das ganze mit einer zweite Anmeldung ... .

    Sicherlich, in der Regel bemerkt das niemand. Ich weiß ja auch nicht, was PeterP612 nun konkret macht. War ja nur der Weg beschrieben, den ich gehen würde.

    MfG Peter

    Einmal editiert, zuletzt von /dev/null (20. März 2014 um 13:01)

  • Danke für deine schnelle Antwort!

    - Ja, jedes Raspi hat eine eigene IP-Adresse ;)
    - Die Rapsis melden sich nur alle 30 Minuten an, schicken die Mail und dann wird
    das ganze Programm beendet
    - Ja, bei abwechselndem Anschließen funktioniert es


    Mein Programm zum Senden sieht so aus:

    class Mail():
    @staticmethod
    def sendMail(message):
    # Accountinformationen zum Senden der E-Mail
    Absender = '*******@gmail.com'
    Passwort = '*******'
    smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo

    msg = MIMEMultipart()

    # In Account einloggen
    smtpserver.login(Absender, Passwort)

    # Aktuelles Datum holen
    Datum = datetime.today()

    # Text
    Wert = (message)

    # Betreff + Datum
    msg['Subject'] = 'Nachricht von Raspberry Pi - %s' % Datum.strftime('%b %d %Y')

    # Absender
    msg['From'] = Absender

    # Empfaenger
    msg['To'] = Empfaenger

    # Alle Argumente einlesen und in einem String speichern

    text = MIMEText(Wert)
    msg.attach(text)

    try:
    zaehler = 0
    while(zaehler<=fileNum):
    anhang = 'NTCTempFile' + str(zaehler) + '.csv'
    part = MIMEBase('application', "text/comma-separated-values")
    part.set_payload(open(anhang,"rb").read())
    Encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="' + anhang + '"')
    msg.attach(part)
    zaehler = zaehler + 1

    finally:
    smtpserver.sendmail(Absender, [Empfaenger], msg.as_string())
    smtpserver.quit()

  • OK, mehr fällt mir leider nicht ein.
    Ich versende auch schon "ewig" von diversen Geräten Statusmeldungen über Betriebsparameter (von Temperatur bis "Anklopfversuchen jenseits der Schmerzschwelle") per Mail. Allerdings immer von komplett ausgestatteten Linuxrechnern und immer per sendmail und Heirloom mailx. Habe also selbst noch nie dazu irgend ein "Programm" geschrieben.
    Und da ich von meinem Provider mit viiiiiel mehr möglichen Mailkonten beschenkt werde, hat bei mir auch jedes Gerät eine eigene (echte) Absenderadresse bzw. ein eigenes Mailkonto.
    Vielleicht solltest du das einfach mal damit versuchen.

    MfG Peter


  • Und da ich von meinem Provider mit viiiiiel mehr möglichen Mailkonten beschenkt werde, hat bei mir auch jedes Gerät eine eigene (echte) Absenderadresse bzw. ein eigenes Mailkonto.
    Vielleicht solltest du das einfach mal damit versuchen.
    MfG Peter


    würde ich auch machen bevor man zu viel Zeit mit Fehlersuchen vergeudet :thumbs1:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

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