Just2blue4U Geschrieben 23. November 2004 Teilen Geschrieben 23. November 2004 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 23. November 2004 Teilen Geschrieben 23. November 2004 Hi, schau dir mal 'expect' an. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 23. November 2004 Autor Teilen Geschrieben 23. November 2004 ok, danke! werde ich morgen mal machen! weis sonst noch irgendwer irgendwas? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lpl Geschrieben 24. November 2004 Teilen Geschrieben 24. November 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SystemError Geschrieben 24. November 2004 Teilen Geschrieben 24. November 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 25. November 2004 Autor Teilen Geschrieben 25. November 2004 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alexf10 Geschrieben 2. Dezember 2004 Teilen Geschrieben 2. Dezember 2004 http://www.linux-magazin.de/Artikel/ausgabe/1998/09/Expect/expect.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 3. Dezember 2004 Autor Teilen Geschrieben 3. Dezember 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 3. Dezember 2004 Teilen Geschrieben 3. Dezember 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 21. Dezember 2004 Autor Teilen Geschrieben 21. Dezember 2004 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 21. Dezember 2004 Teilen Geschrieben 21. Dezember 2004 Ja, damit hast du natürlich recht. Bequemlichkeit ist halt eben nicht mit Sicherheit gleichzusetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 4. Januar 2005 Autor Teilen Geschrieben 4. Januar 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 10. Februar 2005 Autor Teilen Geschrieben 10. Februar 2005 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 10. Februar 2005 Teilen Geschrieben 10. Februar 2005 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"; ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 10. Februar 2005 Autor Teilen Geschrieben 10. Februar 2005 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 10. Februar 2005 Teilen Geschrieben 10. Februar 2005 Ja natürlich - ist nix anderes als Tcl-Code. ... "xyz" { send xyz;} ... "password" { break; } ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 11. Februar 2005 Autor Teilen Geschrieben 11. Februar 2005 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 11. Februar 2005 Autor Teilen Geschrieben 11. Februar 2005 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Just2blue4U Geschrieben 14. Februar 2005 Autor Teilen Geschrieben 14. Februar 2005 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.