Veröffentlicht 23. November 200420 j 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?
24. November 200420 j 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
24. November 200420 j 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
25. November 200420 j 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...
3. Dezember 200420 j 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.
3. Dezember 200420 j 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
21. Dezember 200420 j 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...
21. Dezember 200420 j Ja, damit hast du natürlich recht. Bequemlichkeit ist halt eben nicht mit Sicherheit gleichzusetzen.
4. Januar 200520 j 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
10. Februar 200520 j 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!
10. Februar 200520 j 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"; ...
10. Februar 200520 j 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?
10. Februar 200520 j Ja natürlich - ist nix anderes als Tcl-Code. ... "xyz" { send xyz;} ... "password" { break; } ...
11. Februar 200520 j 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!
11. Februar 200520 j 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?
14. Februar 200520 j 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.