C Programm Befehle entgegen nehmen

Ich habe ein C Programm, das im Hintergrund läuft, also ein Art Daemon, wenn man es so haben will. Dieser Daemon läuft auf System A.

Ein anderes System B greift jetzt per SSH auf das System A zu und soll dem Daemon Befehle geben. Um direkt zu sein zwei Zahlen. Wie stelle ich das an? Habe schon folgendes probiert:

mit
Code:
screen -S server -d -m server
und dann mit
Code:
screen -r server
das Programm wieder holen.
Nur das wieder holen funktioniert leider nicht. Man muss dazu sagen, das System B das per SSH auf System A zugreift, passiert in einem Java Programm per
Code:
String[] command = {"ssh", "-i", "id_rsa", "-o", "StrictHostKeyChecking=no", "root@xx.xx.xx.xx"};
try {
	Process process = Runtime.getRuntime().exec(command);
	output = new PrintStream(process.getOutputStream());
	output.println("screen -r server");
} catch (IOException e) {
	e.printStackTrace();
}

In diesem Programm holt er sich aber leider einfach nicht das screen -r server.

Bitte dringen um Hilfe
Danke
 
Wenn du via SSH Befehle direkt ausführst, wird kein TTY genutzt. Dieses wird von screen aber benötigt. Evtl. funktioniert es, wenn du bei SSH mittels Parameter ein TTY erzwingst. Ansonsten verpasse deinem Server einen echten Socket und sende die Befehle darüber. Auch ein procfs-Interface wäre denkbar, so dass du dem Server Befehle senden kannst indem du in seine erzeugte procfs-Datei schreibst.
 
Du könntest den "Daemon" auch zu nem command oder Service machen und die "Befehle" via ssh remote command, zB aus einer shell heraus senden.

Ausserdem ist dein Code in c++ geschrieben, nicht in C.
 
Eine andere Möglichkeit wäre noch den "Server" aus einer named Pipe lesen zu lassen. In diese schreibst (echo/printf) du dann über die SSH Verbindung deine Befehle.

Dies kann allerdings bei mehreren gleichzeitigen Schreibzugriffen zu Kuddelmuddel führen AFAIK.
Falls du mehre gleichzeitige Schreibzugriffe benötigst wären vielleicht Unix Sockets das richtige ?
 
Zurück
Oben