Zum Inhalt springen

mail automatisch lesen


Just2blue4U

Empfohlene Beiträge

hi Ihrs!

Ich bin auf der Suche nach einer Möglichkeit, automatisch Daten durchs LAN zu schicken. Sie sollen von Clients zum Server gelangen, wobei ich bei den Clients nach Möglichkeit nix installieren möchte. Die meissten Rechner die bei meinem Vorhaben die Clients darstellen haben einen postfix Mailserver an bord, so das ich theoretisch eMails verschicken könnte. das Problem ist dabei nur, das diese eMails vom Server dann auch automatisch wieder ausgelesen werden sollen.

Kennt irgendwer ein Clientprogramm das sich einfach per shellscript steuern lässt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin auf der Suche nach einer Möglichkeit, automatisch Daten durchs LAN zu schicken.

Hallo,

also ich würde zur Datenübertragung im LAN eher eine Kombination von RSync und SSH empfehlen.

Du könntest:

a.) die zu übertragenden Daten vom Server aus pushen und dann ebenfalls via SSH die Folgeverarbeitung auf den Clients anstossen.

b.) auf den Clients die Daten per Cronjob aus ziehen und folgeverarbeiten.

Bye

SystemError

Link zu diesem Kommentar
Auf anderen Seiten teilen

also die sache mit .forward werde ich mir demnächst mal reinziehen. Bin im mom dabei, mich mit "expect" zurechtzufinden. Habe auch schon ne cfg geschrieben um mutt austomatisch laufen zu lassen. allerdings funzt das bisher nur in einem einzigen Fall. Ich muss irgendwie noch ne verzweigung a la "if-then-else" da rein bekommen. Daher meine Frage:

Hat jemand ein gutes (am Besten deutsches) howto, manual oder tutorial für "expect"?

Ich hab schomma google befragt, allerdings spucht mir google jede menge müss raus denn "expect" ist ein sehr häufig und sehr verschieden verwendeter Begriff.

Die Übertragung mit Hilfe von SSL und private/publickey wollte ich eigentlich aus Sicherheitsgründen vermeiden...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das freut mich - expect ist einfach klasse!

Aber sag mal, das wäre doch auch einfacher gegangen - eine Datei von A nach B:

scp file user@remotehost:

Damit du kein Passwort eingeben musst, sicherst du einfach deinen Publick-Key in die .ssh/authorized_hosts des users von remotehost.

Nunja mit expect ist man wahrscheinlich flexibler :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...
  • 2 Wochen später...

Habe mal wieder an dieser Mail-geschichte nen bissel weitergebastelt. Dank dem Link (Linux-Mag) und dem expect-man steig ich auch schon so einigermaßen durch das ding durch. Da aber mein Ausbilder im mom urlaub hat, hier mal ganz simple Fragen:

Wenn ich eine Mail mit Anhang in Mutt öffne, dann besteht diese grundsätzlich immer aus dem eigentlichen Anhang und einem automatisch vom client-mail-prog angefügtem:


q:Verlassen  s:Speichern  |:Filtern  p:Drucke  ?:Hilfe

  I     1 <no description>                   [text/plain, 7bit, us-ascii, 0,1K]

  A     2 stats_dori                       [text/plain, 8bit, iso-8859-1, 0,1K]

- Wofür stehen das "I" und "A" am Zeilenanfang?

- Wie kann ich "expect" zuverlässig den richtigen Anhang zeigen?

- Wann wird Deutschland von DSDS, Popstars & Co. erlöst? ;)

mfg,

J2B4U

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

hab das jetzt soweit alles fertig, nur noch 1 problem:

wie kann ich expect sagen, was es tun soll, wenn keines der angegebenen Pattern passt? sozusagen das "else" bei einer if-abfrage...

wenn ich schreibe


expect "string1" { send "1" } \

       "string2" { send "2" } \

       default { send "default" } 

dann bekomm ich immer nen timeout falls weder string1 noch string2 zutreffen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

du hast mehrere Möglichkeiten. Du kannst den timeout übrigens auch selbst definieren. Du kannst eine Abprüfung machen oder auch einfach den default Fall definieren:


...

set timeout 5;  #timeout=5 sec.

expect {

    "case1"    { send "1"; set flag 0; }

    "case2"    { send "2"; set flag 0; }

    "case3"    { send "3"; set flag 0; }

}

if {$flag != 0} {

    # If 'case[123]' isn't visible, exit with error..

    puts stderr "Error: Nothing to do. exit.\n";

    exit 1;

}

unset flag;

send "something...\r";

...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe das script mal mit break angefangen:


#!/usr/bin/expect

# Expect: Maileingang Prüfen, Mails auswerten und löschen

#


# spawn mutt


set i 1;        # Zählvar für Mail Nr.

set timeout 3;  



spawn mutt;

while { $i < 10 } {

  send "$i \r";

  expect {

    "Ung*ltige Nachrichtennummer"  {

      break;

    }

    default                        {

      send "\r";

      sleep 1;

      send "i";

      send "d";

    }

  }

  incr i;

}

interact;


allerdings habe ich immernoch das problem das Expect die timeout-zeit wartet, bevor es in den default-block geht. Ist das normal? Wie kann ich das noch lösen?
expect "*" {...};

ist sicherlich nicht grade die eleganteste lösung, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Folgenden Fehler erhalte ich von "cron", jedes Mal wenn er mein Expect-Script ausführen soll:


send: spawn id exp3 not open

    while executing

"send "$i \r""

    ("while" body line 3)

    invoked from within

"while { $flag == 0 && $i < 20 } {

  incr i;

  send "$i \r";

  expect {

    "*Ung*ltige Nachrichtennummer*" {  # Ende der Nachrichtenliste erreicht

   ..."

    (file "/etc/mrtgserver/data_in/autoreceive_v0.5" line 23)

in meiner Crontab steht dieser Eintrag:

  */5 *  *  *  *   /etc/mrtgserver/data_in/autoreceive_v0.5   2>&1 > /dev/null

So sieht das Script aus:

#!/usr/bin/expect

# Expect: Maileingang Prüfen, Mails auswerten und löschen

#


# Variablen de-

# klarieren

################

set i 0;       # Zählvar für Mail Nr.

set flag 0;    # Steuert Wiederholung der Schleife

set eof 0;     # Steuert Programmende

set timeout 3; #

set testvar 0; # Testvariable

################



###

# Mutt starten

spawn /usr/bin/mutt;



###

# Mails abrufen

while { $flag == 0 && $i < 20 } {

  incr i;

  send "$i \r";

  expect {

    "*Ung*ltige Nachrichtennummer*" {  # Ende der Nachrichtenliste erreicht

      set flag 1;

    }

    "*keine Nachrichten vorhanden*" {  # Mailbox leer

      set flag 1;

    }


    "   $i "                        {  # Nachricht gefunden

      send "\rv2\r\r";

      expect {

        "*- Daten f*r MRTG %*" {       # Anhang enthält MRTG-Daten

          send "is\r";                 # # Anhang speichern

          expect {

            "Datei existiert*" {         # Datei existiert bereits

              send "u";                    # Datei überschreiben

            }

            default {

              set testvar 1;

            }

          }

          send  "qi";                    # Nachricht schliessen

        }

        default {                      # Anhang enthält keine MRTG-Daten

          send "iqi";                    # Mail schliessen

          set testvar "2";

        }

      }

      send "d";                        # Mail zum Löschen freigeben

    }

  }

}



###

Interessanterweise funktioniert das Script wenn man es selbst ausführt ganz prima:

[mrtg@dori data_in]$ ./autoreceive_v0.5

spawn /usr/bin/mutt

1

1 behalten, 1 gelöscht.

[mrtg@dori data_in]$

hat da wer ne ahnung was das sein könnte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...