www.mikrocontroller.net

Forum: PC-Programmierung Wer kennt sich mit JSch für Java aus?


Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es hier irgendjemanden der sich mit JSch (SSH) für Java auskennt?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Link?
Problem?
:)

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.jcraft.com/jsch/

Mein Probleme sind derzeit:

1) Eine Klasse zu entwickeln mit der ich sozusagen auf der SSH-Konsole 
mitlesen kann und sofern da was ankommt [etwa in der Form (10,2,a,,s) ] 
das ganze in nen String umzubauen und auseinanderzuklämüsern.

2) Den ganzen SHH Traffic mitzulesen und in einer TextBox (GUI) 
auszugeben. Schreiben (Terminal) ist nicht zwangsläufig erforderlich

3) SSH Befehle, in ähnlicher Form wie (1) senden.

Ich komme bis jetzt nicht über Programmabstürze hinaus

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1) Eine Klasse zu entwickeln mit der ich sozusagen auf der SSH-Konsole
> mitlesen kann und sofern da was ankommt [etwa in der Form (10,2,a,,s) ]
> das ganze in nen String umzubauen und auseinanderzuklämüsern.

Wenn ich das richtig gelesen habe ist JSch ja ein SSH Client, und wenn 
sein ein Client mit einem SSH-Server bindet hat man ja eine Shell - 
woher soll jetzt der Text kommen wenn du nichts sendest?


> 2) Den ganzen SHH Traffic mitzulesen und in einer TextBox (GUI)
> auszugeben. Schreiben (Terminal) ist nicht zwangsläufig erforderlich

Welche Traffig will du mitlesen? Von was soll der Traffig erzeugt 
werden?


> Ich komme bis jetzt nicht über Programmabstürze hinaus
Eventuell erstmal zeigen was du bist jezt gemacht hast, und auch die 
Fehlermeldung dazu.

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, also:

Das Java-Programm soll auf einen Linux Server zugreifen, dieser sollte 
sowas wie oben beschrieben senden, also einige Werte in einem 
Array-ähnlichen System zusammengefasst.
Ich möchte also auslesen, was der Server mir zum Rechner sendet.

Mit Traffic meinte ich das was auf dem Terminal gesendet und empfangen 
wird, also einfach um nachzuvollziehen, was ankommt und was ich sende.

Den Code werde ich mal leserlich zusammenstellen.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du dich auf einem Linux system per SSH einloggs hast du erstmal 
eine Shell - woher kommt dann das Array?

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem Server läuft ein Programm, das gibt nach und nach den ganzen 
krams aus.
Hier mal das, was bis jetzt schonmal funktioniert...
class ssh {

        void ssh_connect() {

            try {
                String host = "xxxx";
                String user = "xxxx";
                String password = "xxx";
                int port = 22;

                    //int tunnelLocalPort=9080;
                    //String tunnelRemoteHost="127.0.0.1";
                    //int tunnelRemotePort=80;

        //Hier gehören eigentlich noch die Fingerprints hin...

                JSch jsch = new JSch();
                Session session = jsch.getSession(user, host, port);
                session.setPassword(password);
                localUserInfo lui = new localUserInfo();
                session.setUserInfo(lui);
                session.connect();
                Channel channel = session.openChannel("shell");
                //session.setPortForwardingL(tunnelLocalPort,tunnelRemoteHost,tunnelRemotePort);
                System.out.println("Connected");


                    //channel.setInputStream(System.in);
                    //channel.setOutputStream(System.out);

                OutputStream out = channel.getOutputStream();
                InputStream in = channel.getInputStream();
                channel.connect();
               
              //Hier liegt nun das Problem:
        //Ich habe es auch schon mit BufferedReader versucht,
       // um das ganze in einen String zu kriegen

      channel.disconnect();
      session.disconnect();
    }
    catch(Exception e){
      System.out.println(e);
    }
  }

        int ssh_close() {
            
  //Nur zum Test da.....

            return 2;
             }

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum probierst du es nicht einfach mal mit den Beispielen, die auf der 
JSch-Homepage gelistet sind?

http://www.jcraft.com/jsch/examples/Shell.java

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Beispiele sind ganz schön.
Nur Leider fehlt da die Doku.
Das ganze ohne GUI zum laufen zu bekommen kriege ich ja hin.
Aber für das andere kriege ich programmiertechnisch nicht hin - sonst 
würde ich ja nicht Fragen

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann übergib doch deinen Methoden
channel.setInputStream(inStream);
channel.setOutputStream(outStream);

mal den BufferedReader bzw. BufferedWriter, damit jsch auch weiß, woher 
die Daten kommen und wohin die geschrieben werden müssen.

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soo, ich habe jetzt mal folgendes angefügt:
BufferedReader ein = new BufferedReader(new InputStreamReader(in));
                    BufferedWriter aus = new BufferedWriter(new OutputStreamWriter(out));

                    String s;
                    int i;
                    //s = ein.readLine();
                    //terminalArea.setText(s);

                    while(true)
                    {
                    i = ein.read();
                    if(i==-1)break;
                    else{
                        System.out.print(new Character((char)i));
                        }

                    }

Das Problem ist, ich habe das ganze einfach mal mit nem Webserver 
versucht, auf dem man nur sein Passwort via SSH ändern kann.
Das Programm hängt aber immer nach dem Lesen der letzten Zeile (Zeichen)
Beziehungsweise, vielleicht versucht es auch weiter zu lesen.

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich komm nicht weiter....
Channel.getInputStream
Channel.setInputStream

Wie und was ist denn nun richtig?
Irgendwie habe ich grad keine logische Denkstruktur

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
menno...
Das Ding läuft ja sogar, jetzt hab ich sogar noch ne Thread 
drumrumgebastelt und trotzdem hängt diese verdammte GUI

Autor: Phil J. (sunflower_seed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin zum Glück doch nicht ganz alleine mit meinem Problem:
http://blog.james-carr.org/2006/07/11/ssh-over-java/

Funktionieren tut das aber auch nicht SCNR

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.