Wer kennt sich mit JSch für Java aus?

#1084769
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
Gast #1084781
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.
#1085016
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.
#1085251
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
             }
#1085494
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren