ssh mit Jsch

  • 3 Antworten
  • Letztes Antwortdatum
T

Turbo1976

Neues Mitglied
0
Hallo an euch,

ich möchte über SSH einen Befehl absetzen und die Ausgabe auslesen. Dies versuche ich mit dem folgenden Code:

Code:
JSch jsch = new JSch();
        Session session = jsch.getSession(username, hostname, port);
        session.setPassword(password);
         //Unterbindet die Anfrage nach Schlüsselbestätigung
        Properties prop = new Properties();
        prop.put("StrictHostKeyChecking", "no");
        session.setConfig(prop);
  
         session.connect();
         Channel channel = session.openChannel("exec");
        channel.connect();
  
         DataInputStream dataIn = new DataInputStream(channel.getInputStream());
        BufferedReader reader = new BufferedReader(new InputStreamReader(dataIn));
        DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream());
 
        dataOut.writeBytes("cat test.txt");
        dataOut.flush();
         
        String line = reader.readLine();
        String result = line + "\n";
  
         int counter = 0;
         while ((line = reader.readLine()) != null) {
            counter++;
            resultSet[1][0] = Integer.toString(counter);
        }
         
        dataIn.close();
        dataOut.close();
        channel.disconnect();
        session.disconnect();

Den Counter in das Array zu schreiben mache ich hier nur zum Test. Leider bleibt das Feld an der Stelle immer bei "null", wird also offenbar nicht geschrieben. Dasselbe, wenn ich line in das Feld schreiben lasse.

Hat jemand eine Idee, was ich falsch mache?
 
Das Naheliegenste wäre, dass deine while-Schleife gar nie ausgeführt wird. Vielleicht gibts nur eine einzige Zeile als Output und diese liest du bereits vor der Schleife?

Hast du schon geschaut, was in result steht, bevor du die Schleife erreichst?
 
Wenn ich deinen Code mit dem hier vergleiche, würde ich sagen, du schickst deinen Befehl einfach an den Input-Stream, statt ihn auszuführen - wodurch du natürlich auch keinen Output erzeugst.
 
DataInput/OutputStreams sind in diesem Kontext nicht angebracht, da du keine binär codierten Java-Primitiv-Objekte hin- und herschiebst.

Aber ich denke auch, dass Zoopa das eigentliche Problem anspricht.
 
Zurück
Oben Unten