Hallo, Am Mon, 22 Nov 2004, maX Bauer schrieb: [..]
Ich habe jetzt erstmal alle Antworten vom Server mit read entgegengenommen. Jetzt wäre nurnoch interessant, ob es eine Möglichkeit gibt, gewisse Antworten zu ignorieren, bzw. mehrere Worte in eine Variable zusammenzufassen, denn eigentlich interessiert mich nicht, ob der server "ready" ist. Das ist Sache des Providers.
Du solltest schon schauen, ob die Verbindung und das einloggen klappen und geeignet darauf reagieren.
Ich habe einfach mal eine ganze Reihe Variablen abgefragt und bekomme für jedes besch..... Wort vom Server eine Variable (a1 -a9).
Gib nur soviel an wie du brauchst, der Rest wird in den letzten Namen gepackt.
mbauer@idefine:~> ./pop User loggt sich ein msg1=+OK okuser=POP3 server ready passwortabfrage user ist eingeloggt okpass=+OK stat a1=+OK a2=pt7674139-6's a3=mailbox a4=has num=13 a6=messages a7=(56778 a8=octets) a9=H mstoreng7
--------------------------------- Diese Mailbox enthaelt 13 Mails ---------------------------------
...und der jetzige Code:
==== #!/bin/bash CR=$'\r' ansok() { if test "x$1" != "x+OK"; then echo "$2" >&2 exit 1 fi } exec 3<>/dev/tcp/pop.1und1.de/110 read status ans <&3 ## ggfs. vorher/nachher noch weitere Zeilen einlesen und ignorieren, ## bei der mit "+OK" sollte man dann ansok $status $ans ## einfuegen echo user xxx >&3 read status ans <&3 ansok $status $ans echo pass yyyyyyyyyy >&3 ansok $status $ans echo user ist eingeloggt echo stat >&3 read a1 a2 a3 a4 num rest <&3 echo "a1=$a1 a2=$a2 a3=$a3 a4=$a4 num=$num rest=$rest" echo "Diese Mailbox enthaelt $num Mails" ===== -dnh, fast Zufallssig! :) [die erste sig war zu lang fuer hier, die kam im zweiten Versuch] -- I believe the technical term is "Oops!"