ssh connection; Zugriff auf 'screen' Prozess

Lodorvonhal

Mitglied
Hallo,

ich bin dabei eine Anwendung zu schreiben, welche auf meinen Linux-Server (Ubuntu) per ssh Verbindung zugreift. Ich realisiere das per JSch. Zusätzlich möchte ich in der Verbindung auf einen screen-Prozess zugreifen.

Dieser Code funktioniert auch ohne Probleme (Example von jcraft.com):

Java:
JSch jsch = new JSch();

Session session = jsch.getSession(user, host, 22);
session.setPassword(password);

session.setConfig("StrictHostKeyChecking", "no");

session.connect(10*1000);

Channel channel=session.openChannel("shell");
Channel screen = null;
InputStream is = new ByteArrayInputStream(command.getBytes());
channel.setInputStream(is);
		    
channel.setOutputStream(System.out);
channel.connect(15 * 1000);

Thread.sleep(3*1000);
		    
channel.disconnect();
session.disconnect();

Erster Gedanke war, dass ich per command über ein Befehl an den screen Prozess senden könnte.

Java:
String command = "screen -S SITZUNG -X stuff $'BEFEHL\n'\n";

Soweit geht das auch. Mein Problem ist, dass ich bei bestimmten Befehlen auch Rückgaben in der Konsole bekommen. Diese möchte ich auch verarbeiten.

Hat jemand einen Ansatz wie ich an den screen Prozess per Java drankomme um direkt damit zu arbeiten?


Danke fürs lesen.
MFG
 

Barista

Top Contributor
Wenn Du Runtime.exec benutzt, bekommst Du ein Process-Objekt zurück,
welches auch die Methoden

Java:
abstract public OutputStream getOutputStream();

abstract public InputStream getInputStream();

abstract public InputStream getErrorStream();

zur Verfügung stellt.

Ich habe vor vielen Jahren da mal was unter Windows gemacht.

Da war wichtig, die Streams in eigenen Threads auszulesen,
damit das aufgerufene Programm nicht blockiert.
 

Sen-Mithrarin

Gesperrter Benutzer
@barista
die antwort hat mal nichts mit der frage zu tun ... du hast nicht mal verstanden worum es geht

@TO
spontan würde ich behaupten das du einfach über das commando "screen -r" dich an den screen hängen kannst ... nur wie du dann das "CTRL + A + D" zum detachen senden kannst ... kein plan
 

Lodorvonhal

Mitglied
Hallo und Danke für Eure Antworten. Sry das ich jetzt erst antworte, bei mir war gestern das Internet weg. :shock:

@Barista
Ich habe mit dem Runtime.exec noch nicht gearbeitet. Aber so wie ich das Verstanden habe kann ich damit nur auf plattformeigene Prozesse zugreifen. Ich möchte aber eine App erstellen, welche einen Zugriff auf den Linux Prozess hat.

Trotz alle dem habe ich gesehn das JSch auch so etwas hat. simple JSch API

@Sen-Mithrarin
Danke für den Hinweis, das Ganze hat mich auf eine Idee gebracht um der Lösung ein Stück näher zu kommen.

@turtle
Bezogen auf den Link oben habe ich mit das Beispiel noch einmal angeschaut. Danke.


Zusammenfassen bin ich ein Stück weiter gekommen. Hier ein paar Codeauszüge:

Java:
String command2 = "screen -rx SITZUNG\n";

Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(command2);
((ChannelExec)channel).setPty(true);

Ich hab den Cannel-Typ auf 'exec' geändert. Dadurch bekomme ich Zugriff auf den Prozess. Den Befehl habe ich dahingehend geändert, das ich Zugriff auf den screen bekomme. den Parameter '-r' zum Aufnehmen der Sitzung und explizit '-rx' um einen Zugriff von mehreren Clients gleichzeitig zu erlauben.

Zunächst bekam ich dann den Fehler "Must be connected to a terminal". Daher habe ich die Methode 'setPty' verwendet, welche ein Pseudo Terminal erstellt.

Wenn ich mir nun den Outstream ausgebe, bekomme ich die Ausgabe des screen-Prozess. :applaus:
Danke für die Hilfe dazu.


Leider komme ich nun noch nicht weiter. Ich kann nun keine spezifischen Befehle an den screen schicken. Bekomme immer Fehlermeldungen, dass die Befehle nicht existieren. Daher vermute ich, dass ich noch kein direktes Objekt des screen habe, sondern nur ein Zugriff auf den Stream.

Ich habe die Anwendung nun so erweitert, dass ich wie im Beispiel aus dem ersten Post einen Befehl per stuff an den screen sende. Mit der Erweiterung von heute kann ich das Ergebnis sehen. Nur ist das Ganze ein wenig Holzhammer.

Ich versuche mal weiter. Wenn jemand noch Ansätze oder Ideen hat immer her damit.
 

Lodorvonhal

Mitglied
Sry für den Doppelpost. Aber ich habe die Antowort.

Ich sag noch das ich nur Zugriff auf den Stream habe. Und das war auch die Lösung. :bloed:

Ich sende einfach über den Inputstream den Befehl an den screen.

Java:
InputStream is = new ByteArrayInputStream(command2.getBytes());
 channel.setInputStream(is);

Und es geht. Ich Danke allen nochmal für die Hilfe und Ansätze. Hier folgend der funktionierende Code.

Java:
public static void main(String[] args) {
		
	    String user = "user";
	    String password = "password";
	    String host = "host";

	    String command = "screen -rx SITZUNG\n"; // Zugriff auf den Screen
	    String command2 = "BEEHL_AN_SCREEN\n"; // Befehl an den Screen

	    try
	        {
	    	JSch jsch = new JSch();
		    
		    Session session = jsch.getSession(user, host, 22);
		    session.setPassword(password);

		    session.setConfig("StrictHostKeyChecking", "no");
		    session.connect(10*1000);

		    Channel channel = session.openChannel("exec");
		    ((ChannelExec)channel).setCommand(command);
		    ((ChannelExec)channel).setPty(true);
		    
		    InputStream is = new ByteArrayInputStream(command2.getBytes());
		    channel.setInputStream(is);
		    
		    channel.setOutputStream(System.out);
		    
		    channel.connect(15 * 1000);
		    Thread.sleep(3*1000);
		    channel.disconnect();

		    session.disconnect();
	        }
	    catch(Exception e){System.err.print(e);}
	    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
S Client Server Connection Netzwerkprogrammierung 4
C Handle Connection Problem Netzwerkprogrammierung 3
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
K Socket Exception Connection reset Netzwerkprogrammierung 9
VfL_Freak Socket SocketException: Connection reset Netzwerkprogrammierung 11
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
RELAXccc HTTP Connection timed out: connect ?an was kann es liegen? Netzwerkprogrammierung 4
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
N Socket verliert die Connection. Netzwerkprogrammierung 4
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
M RMI - Connection Problem Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4
A Chatprogramm: Connection refused Netzwerkprogrammierung 4
T RMI RMI und VPN - callbackObject Connection refused Netzwerkprogrammierung 13
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
M FTP-Connection über FTP-Proxy Netzwerkprogrammierung 20
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
A RMI java.rmi.ConnectException: Connection refused to host: 1 Netzwerkprogrammierung 4
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
G InputStreamReader lässt TCP-Connection offen Netzwerkprogrammierung 9
X URL connection Problem Netzwerkprogrammierung 3
R ConnectException: Connection refused to host: 192.168.1.4 ? Netzwerkprogrammierung 8
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
tfa RMI-Problem: Connection refused to host: 127.0.0.2 Netzwerkprogrammierung 4
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
B RMI & Connection refused to host Netzwerkprogrammierung 12
G httpUnit: Connection timed out Netzwerkprogrammierung 3
lhein java.io.IOException: Unable to establish loopback connection Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
B Multithreaded Server: Connection reset Netzwerkprogrammierung 4
T JDBC Verbindungsabbruch (Connection reset) Netzwerkprogrammierung 2
M SocketException: Connection reset Netzwerkprogrammierung 10
G MAC / IP Connection Netzwerkprogrammierung 10
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6
M seltsam: java.net.SocketException: Connection reset Netzwerkprogrammierung 1
B RMI Connection Problem Netzwerkprogrammierung 13
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
H java.net.SocketException: Software caused connection abort Netzwerkprogrammierung 4
R FTP Connection zu Server Netzwerkprogrammierung 4
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3
windl Bluetooth und Zugriff auf ein IPhone Netzwerkprogrammierung 0
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
D Zugriff auf Webinhalte ohne visuelles Öffnen der Website Netzwerkprogrammierung 2
J Website-Zugriff beenden Netzwerkprogrammierung 11
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
F Desktop.browse() zugriff verweigert Netzwerkprogrammierung 2
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
D Zugriff auf zentrale DB von verscheidenen Computern Netzwerkprogrammierung 7
T FTP-Zugriff auf Textdatei Netzwerkprogrammierung 13
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
T JavaMail POP Zugriff zeigt nicht alle Emails Netzwerkprogrammierung 2
V Zugriff auf Laufwerk mit Username und Passwort? Netzwerkprogrammierung 7
R CVS- Zugriff Netzwerkprogrammierung 27
Airwolf89 Passwortabfrage bei Zugriff auf Zielrechner Netzwerkprogrammierung 17
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
ABstraCT Telnet port Zugriff problem (public IP) Netzwerkprogrammierung 12
S Zugriff auf Webseite Netzwerkprogrammierung 3
F Webserver Zugriff per Java Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
T XML-RPC kein Zugriff auf Server Interface Netzwerkprogrammierung 3
T RMI - Client Zugriff auf Server funktioniert nicht Netzwerkprogrammierung 5
R Zugriff auf Suchmaschinen. Wie am Sinnvollsten? Netzwerkprogrammierung 2
D Zugriff auf URL über festgelegte Netzwerkresource Netzwerkprogrammierung 6
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3
H ServerSocket -> Zugriff nur von localhost Netzwerkprogrammierung 6
J SecurityManager - Server-Zugriff nur von bestimmten Clients? Netzwerkprogrammierung 2
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
S FTP zugriff - ich versteh es nich Netzwerkprogrammierung 17
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
D Zugriff auf OPC Server Netzwerkprogrammierung 1
D Zugriff auf Rechner im Lan Netzwerkprogrammierung 2
A Zugriff auf Inet Datenbank? Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben