Terminal rückmeldung auslesen

cedi

Mitglied
So, wie der Name schon sagt, müsste ich das Terminal von Linux (SLE 11) auslesen.

Folgendes Problem: Ich schreibe gerade an einem Programm, dass FTP Verbindungen herstellt, ähnlich wie FileZilla. Nur im Moment noch auf Terminal Basis. Um einen Bug von FileZilla zu vermeiden benötige ich die Rückmeldung des Terminals.
Und zwar, dass kennt jeder, der schon mal FileZilla verwendet hat: Der Speicher (Quick connect), in dem die letzten Verbindungen aufgeführt werden. Und wehe man hat mal bei einer Verbindung das Passwort falsche eingegeben, dann speichert es dass auch. und dann nervt das total, weil man immer auf die falsche Verbindung mit dem Falschen Passwort klickt.

Meine idee ist nun bei meinem Programm folgende:
Die verbindung wird nur dann gespeichert, wenn das Passwort korrekt ist, und die Verbindung zum Server erfolgreich war.

Also: Ich habe mein Passwort in dem String PW gespeichert (und jetzt keine predigt darüber, dass das nicht sicher genug ist, und man so das Passwort einfach auslesen kann. das weiß ich selbst) nun soll eine Funktion feststellen, ob die Verbindung erfolgreich war, und die Boolean Variable PWSuccessful auf den wert 'true' setzen, oder wenn die Verbindung fehl geschlagen hat, die boolean Variable auf 'false' setzt. Den Rest bekomme ich wieder selbst hin. es hängt quasi alles an dieser einen boolean Variable, ob sie true oder false ist. Das Programm ist eigentlich schon fertig. Es müsste nur noch die Funktion ergänzt werden, um die variable PWSuccessful auf true zu setzen.

Kennt jemand die passende Funktion hierfür?

Ich habe sogar schon eine Methode alles da, die auch schon im Programm an der richtigen stelle verwendet wird. es hapert nur an diesem kleinen Codestück.

also ich habe mir schon gedacht, dass man eventuell die Rückmeldung vom Terminal auslesen könnte und dann mit einer bereits vorhandenen möglichen Ausgabe vergleicht, ob sie Inhalt xxx oder Inhalt yyy hat.


vielen vielen dank schon mal im vor heraus.

euer cedi
 
Nochmal auf deutsch bitte, ich versteh grad das Problem nicht:
Du willst einen FTP Client wie FileZilla nachbauen.
Ob der Login erfolgreich war teilt dir der Server mit, wie alle anderen Nachrichten auch.
Nachrichten senden und empfangen kannst du offenbar, denn das ist ja irgendwie schon die Basis für einen FTP Client. Wenn nicht würde ich vielleicht erstmal dort ansetzen anstatt irgendwelche quick connect listen zu implementieren (?)
 
ja klar. Ihr denkt sicher eh alle, der hat einen an der Waffel.

Also ich meine, ich muss doch die rückmeldung bekommen, ob der Login erfolgreich war oder nicht. wie kann ich diese auswerten?
 
OK.

Ich verwende für die FTP Verbindung folgende Zeilen:


Java:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class FTPVerbindung {

    public static void main(String[] args) {
        try {
            URL url = new URL("ftp://test:test@test-server.de/home/");
            show(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void show(URL url) throws IOException {
        InputStream in = url.openStream();
        BufferedReader buff = new BufferedReader(new InputStreamReader(in));
        String s;
        while ((s = buff.readLine()) != null) {
            System.out.println(s);
        }
    }
}

so, dass ist jetzt ja nur die Verbindung. Den rest, wie das Design und die Eingabe des Servers und des Passwortes und so hab ich anderweitig gemacht. das ist jetzt nur mal mein Test Programm gewesen.

Jetzt möchte ich aber folgendes machen:
Wenn die FTP Verbindung fehl schlägt, dann soll es ja zum ersten die Verbindung nicht in den Quick connect speichern und zweitens eine Fehlemeldung ausgeben

Java:
System.err.println("Fehler, Verbindung konnte nicht aufgebaut werden. \n Bitte überprüfen sie ihre Eingabe");

so, dass diese Meldung ausgegeben wird, hab ich sie in eine schleife rein gebaut, die überprüft, ob eine boolean Variable true ist.

Java:
 if (FTPFalse == true) {
System.err.println("Fehler, Verbindung konnte nicht aufgebaut werden. \n Bitte überprüfen sie ihre Eingabe");
}

else {
System.out.println("Verbindung erfolgreich aufgebaut");
}

So, nun benötige ich eine Funktion, mit der ich die Rückmeldung vom FTP Server abfangen kann. Also wenn die Verbindung fehlgeschlagen hat, dann bekomme ich ja eine Meldung. Diese Meldung vom Server soll dann abgefangen werden und in den String FTPRückmeldung gespeichert werden.
Dann wird dieser String mit 2 anderen Strings verglichen, die bereits die Fehlermeldung bei einem Verbindungsfehler enthält und einer der die Meldung bei einer erfolgreichen Verbindung enthält. Wenn der Inhalt des Strings FTPRückmeldung der selbe ist wie der Inhalt von FTPRückmeldungFailure /*also dem String, in dem der Verbindungsfehler Inhalt steht*/ dann soll die boolean Variable FTPFalse true werden. /*FTPFalse = true;*/

den Rest habe ich bereits alles gemacht.

hoffe, du kannst mir helfen
 
Da kann ich Dir nicht helfen. Das hat mit FTP nur insofern etwas tun, als dass Du eine sun.net.www.protocol.ftp.FtpURLConnection aufbaust. Die Klasse ist SUN-proprietär. Die kapselt das FTP-Protokoll und versteckt die Interna; wenn was schiefgeht, fliegt eine Exception, z. B. eine FileNotFoundException. Laut OpenJDK-Docs loggt sich der Client einmal ein, führt einen einzelnen Transfer aus und loggt sich gleich wieder aus. Mit einer "FTP-Session" hat das nicht viel zu tun.
 
Zuletzt bearbeitet:
also kann ich mit der exception das abfangen?

also wenn die exception ausgelöst wird, dann weiß ich, dass ein Verbindungsfehler vor liegt. Danke. Das musste ich wissen.
 

Neue Themen


Zurück
Oben