genestete SSH-Verbindung

Goldfish

Bekanntes Mitglied
Hi Leute, ich hänge gerade ein wenig, da ich nicht rauskriege, wie bzw. ob ich sowas überhaupt machen kann.
Ich will mich mit Server B verbinden, welcher durch Firewalls abgeschirmt ist und nur eine Verbindung von Server A aus zulässt. Mit Server A hingegen kann ich mich von überall aus verbinden. Meine Frage also, kann ich eine solche Verbindung mittels Jsch oder ähnlichem herstellen und automatisiert ein einfaches "ls" auf dem Server ausführen?
Ich habs hinbekommen von Server A aus einen ShellChannel aufzumachen, welcher allerdings keine automatisierten Eingaben annimmt... ich hatte den System.out als OutputStream an den Channel gebunden, aber ein System.out.println wurde dann vom Channel ignoriert. Lediglich Tastatureingaben wurden angenommen.

Wäre super, wenn jemand ne Ahnung hat, wie ich das einfach in möglichst wenig Codezeilen bewerkstelligen kann.
 

chalkbag

Bekanntes Mitglied
Ist nur eine Idee, kann also totaler Blödsinn sein.
Server A ist nicht zufällig ein Linux und Server B ein Windows System? D.h. es gibt hier unterschiedliche Interpretationen des Zeilenumbruchs?
 

Goldfish

Bekanntes Mitglied
ne. Darum gehts leider nicht.
Server A und B sind beide Linux.
Problem ist nur, wie verbinde ich mich mittels java mit Server B aus einer Session, die mit Server A verbunden ist.
 

Goldfish

Bekanntes Mitglied
Okay, ich hab einen Weg gefunden, das ganze zu bewerkstelligen. Hab dabei aber ein weiteres Problem bekommen, welches ich lösen muss, damit das Problem als gelöst gilt.

Ich habs jetzt geschafft, mittels ByteArrayInputStream die KOmmandos an Server B zu schicken. die Ausgabe bekomme ich natürlich in einem Outputstream und die Ausgabe ist auch korrekt, wenn ich den OutputStream des Channels an System.out binde.
Aber wie zur Hölle lese ich, was in einen Outputstream geschrieben wird. Der Witz ist ja, dass die KLasse ja nur zum Schreiben gedacht ist...

Wenn ichs folgendermaßen mache, kommt leider nur Blödsinn dabei raus.

Java:
            byte[] bytes = new String("ssh myServer \n ls apoRundschreiben/send \n").getBytes();
            InputStream input = new ByteArrayInputStream(bytes);
            channel.setInputStream(input);
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            output.writeTo(System.out);
            channel.setOutputStream(output);
            channel.start();
            input = new ByteArrayInputStream(output.toByteArray());

            char c;
            int counter = 0;
            while ( (c = (char)input.read() ) != -1 && counter < 1000) {
                System.out.print(c);
                counter ++;
            }

Die Ausgabe sieht dann leider aus, wie hier

Code:
			￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿
 

Goldfish

Bekanntes Mitglied
Hab die Lösung gefunden.
Nagut, nicht ich, sondern mein Arbeitskollege und ich haben sie zusammen nach einem Brainstorming entdeckt.
Für alle die interessiert sind, mit JSCH kann man die Ausgabe über folgenden Weg bekommen. Das ganze ist zwar nicht schön formatiert, weshalb man schauen muss, wie man mit der Eingabe zurecht kommt, aber es geht zumindest.

Java:
ChannelShell channel = getNewChannel("shell");
        InputStream in = null;
        try {
            String cmd = "ssh myServer \n ls myDir \n";
            ByteArrayInputStream input = new ByteArrayInputStream(cmd.getBytes()) ;
            channel.setInputStream(input);
            channel.start();
            in = channel.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSchException e) {
            e.printStackTrace();
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        String line;
        try {
            while (( line = br.readLine() ) != null) {
                System.out.println(line );
            }
        } catch (IOException e) {
            e.printStackTrace();
        }  
        connection.closeConnection();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Meeresgott Input/Output Java Socket Verbindung Allgemeine Java-Themen 1
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
D Socket Verbindung mit TLSv1 Allgemeine Java-Themen 1
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
M Verbindung zu Webserver schlägt fehl Allgemeine Java-Themen 0
B Technikfrage bzgl Verbindung von Frontend und Backend Allgemeine Java-Themen 0
B Webbrowser mit Proxy- Verbindung starten Allgemeine Java-Themen 6
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
D Socket Java Socket Verbindung Allgemeine Java-Themen 14
F Internet Verbindung verschlüsseln Allgemeine Java-Themen 17
F Verbindung mit einem UMTS-Stick herstellen um SMS zu empfangen Allgemeine Java-Themen 8
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
B verbindung mit exchange server Allgemeine Java-Themen 3
MQue FTP Verbindung download Allgemeine Java-Themen 5
R Socket verbindung mit Timeout Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Serielle Verbindung zu einem Handy Allgemeine Java-Themen 3
E iBatis und wie oft wird eine Verbindung hergestellt Allgemeine Java-Themen 5
E ftp verbindung mit javacode Allgemeine Java-Themen 5
S svnkit Verbindung über https Anleitung Allgemeine Java-Themen 6
E Verbindung über TCP Allgemeine Java-Themen 3
P Verbindung überprüfen Allgemeine Java-Themen 5
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G Verbindung zum Server Allgemeine Java-Themen 10
T Frage zu char in verbindung mit int Allgemeine Java-Themen 4
MQue Verbindung zweier Klasse Allgemeine Java-Themen 13
E Verbindung besteht/besteht nicht Allgemeine Java-Themen 5
MQue TCP- Verbindung Allgemeine Java-Themen 12
E TCPIP- Verbindung Allgemeine Java-Themen 3
T RDP Verbindung mit Java herstellen Allgemeine Java-Themen 4
H sichere Datenbank-Verbindung Allgemeine Java-Themen 4
F Socket - Server verbindung Allgemeine Java-Themen 12
M Probleme mit URLClassLoader in Verbindung mit rmi Allgemeine Java-Themen 6
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
R ClassLoader funktioniert in Verbindung mit JAR-Datei nicht Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben