Gibt es hier irgendjemanden der sich mit JSch (SSH) für Java auskennt?
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
> 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.
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.
wenn du dich auf einem Linux system per SSH einloggs hast du erstmal eine Shell - woher kommt dann das Array?
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 | }
|
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
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
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.
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.
Ich komm nicht weiter.... Channel.getInputStream Channel.setInputStream Wie und was ist denn nun richtig? Irgendwie habe ich grad keine logische Denkstruktur
menno... Das Ding läuft ja sogar, jetzt hab ich sogar noch ne Thread drumrumgebastelt und trotzdem hängt diese verdammte GUI
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.