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


von Phil J. (sunflower_seed)


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Link?
Problem?
:)

von Phil J. (sunflower_seed)


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

von Peter (Gast)


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.

von Phil J. (sunflower_seed)


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.

von Peter (Gast)


Lesenswert?

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

von Phil J. (sunflower_seed)


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...
1
class ssh {
2
3
        void ssh_connect() {
4
5
            try {
6
                String host = "xxxx";
7
                String user = "xxxx";
8
                String password = "xxx";
9
                int port = 22;
10
11
                    //int tunnelLocalPort=9080;
12
                    //String tunnelRemoteHost="127.0.0.1";
13
                    //int tunnelRemotePort=80;
14
15
        //Hier gehören eigentlich noch die Fingerprints hin...
16
17
                JSch jsch = new JSch();
18
                Session session = jsch.getSession(user, host, port);
19
                session.setPassword(password);
20
                localUserInfo lui = new localUserInfo();
21
                session.setUserInfo(lui);
22
                session.connect();
23
                Channel channel = session.openChannel("shell");
24
                //session.setPortForwardingL(tunnelLocalPort,tunnelRemoteHost,tunnelRemotePort);
25
                System.out.println("Connected");
26
27
28
                    //channel.setInputStream(System.in);
29
                    //channel.setOutputStream(System.out);
30
31
                OutputStream out = channel.getOutputStream();
32
                InputStream in = channel.getInputStream();
33
                channel.connect();
34
               
35
              //Hier liegt nun das Problem:
36
        //Ich habe es auch schon mit BufferedReader versucht,
37
       // um das ganze in einen String zu kriegen
38
39
      channel.disconnect();
40
      session.disconnect();
41
    }
42
    catch(Exception e){
43
      System.out.println(e);
44
    }
45
  }
46
47
        int ssh_close() {
48
            
49
  //Nur zum Test da.....
50
51
            return 2;
52
             }

von Frank E. (erdi-soft)


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

von Phil J. (sunflower_seed)


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

von Frank E. (erdi-soft)


Lesenswert?

Dann übergib doch deinen Methoden
1
channel.setInputStream(inStream);
2
channel.setOutputStream(outStream);

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

von Phil J. (sunflower_seed)


Lesenswert?

Soo, ich habe jetzt mal folgendes angefügt:
1
BufferedReader ein = new BufferedReader(new InputStreamReader(in));
2
                    BufferedWriter aus = new BufferedWriter(new OutputStreamWriter(out));
3
4
                    String s;
5
                    int i;
6
                    //s = ein.readLine();
7
                    //terminalArea.setText(s);
8
9
                    while(true)
10
                    {
11
                    i = ein.read();
12
                    if(i==-1)break;
13
                    else{
14
                        System.out.print(new Character((char)i));
15
                        }
16
17
                    }

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.

von Phil J. (sunflower_seed)


Lesenswert?

Ich komm nicht weiter....
Channel.getInputStream
Channel.setInputStream

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

von Phil J. (sunflower_seed)


Lesenswert?

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

von Phil J. (sunflower_seed)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.