Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

mail automatisch lesen

Empfohlene Antworten

Veröffentlicht

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?

ok, danke! werde ich morgen mal machen!

weis sonst noch irgendwer irgendwas?

Hi,

du kannst beim empfang einer mail z.b. mit procmail einen automatismus erzeugen oder alternativ mit einer .forward datei im userhome die via pipe die mail an ein anderes programm/script weiterleitet.

.forward

| myprogram.pl

hope it helps,

tom

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

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...

danke!

Hab mittlerweile geschafft, eine cfg zu schreiben die eine Datei von rechner a nach rechner b kopiert (scp).

das ist wesentlich einfacher als das mit mains zu machen.

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

  • 3 Wochen später...
Damit du kein Passwort eingeben musst, sicherst du einfach deinen Publick-Key in die .ssh/authorized_hosts des users von remotehost.

... und genau das will ich eben nicht. denn wenn dann irgendwer es geschafft hat, auf PCa zu kommen, dann kann er auch gleich auf PCb...

  • 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

  • 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!

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";

...

jou.. so ähnlich habe ich das schon. nur habe ich diese abfrage inna schleife. Wenn ich nin nicht das ganze script abbrechen will sondern nur den schleifendurchlauf, wie mache ich das dann? gibt es eine funktion "break" oder sowas in der art?

ok, danke! ich werd das dann mal so versuchen.

Sorry wenn ich so simple sachen nciht weis... ich hab kein plan von Tcl! Fange langsam aber sicher an, mit tcl und expect klarzukommen, daher ist mir jede hilfe recht! ich hoffe nur dieser ganze aufwand lohnt sich!

danke!

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?

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.