Wer kennt sich mit JSch für Java aus?

OP #1084769
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
> 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.
OP #1085016
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.
OP #1085251
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
             }
#1085270
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.
OP #1085494
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.