Systemd - Kommunikation mit Service möglich?

G

GrayWolf

Gast
Hallo Community,

ich hätte eine Frage bezüglich der Kommunikation (im Sinne dass ich einen Befehl und dessen Ergebnis übergeben kann) mit einem Service. Dieser wird von Systemd ganz normal gestartet und läuft auch super. Ich würde jetzt gerne Befehle an diesen übergeben. Es ist eine Minecraft-Instanz, die ja über Java läuft. Leider kann ich ja der Java-Binary nicht sagen, zeige mir mal die Liste der Spieler an die gerade verbunden sind. Der einzige Weg den ich gefunden habe ist über das Rcon-Protokoll sozusagen lokal, über das Netzwerk zu kommunizieren. Das kanns doch nicht sein oder? Hat da jemand eine Idee?
 
Kommt halt immer darauf an, welche Schnittstellen zur Kommunikation der Service bietet. Umgebungsvariablen sind da eine moeglichkeit.
Via RCON ist der default um mit dem Minecraft server zu reden
 
Nutze doch einfach eine Minecraft Server Software. Früher gab es doch z.B. Bukkit. Da meldest du dich einfach als Admin an und kannst dann diverse Befehle ausführen.

https://minecraft.fandom.com/de/wiki/Programme_und_Editoren/Server-Software

 
Es ist im Prinzip ja ziemlich egal, wie der Minecraft Server nun gestartet wurde, sei es System-D oder was auch immer .. der läuft und Du möchtest mit dem Kommunizieren.
Protokoll ist RCON okay ... schauen wir mal .. was es da gibt .. andere wollten das bestimmt auch schon

Treffer: Eine einfache Java-Implementierung https://github.com/jobfeikens/rcon

von der Seite hier https://wiki.vg/RCON

da gibt es noch jeder Menge andere Implementierung in vielen anderen Spragen
 
  • Gefällt mir
Reaktionen: madmax2010
Also ich habs mir mit meinem kleinen Minecraft Server einfach gemacht und ein Discord Plugin installiert, welches den Chat/Konsole in zwei Chats über einen Bot postet, somit kann ich auch über z.B. Smartphone befehle über Discord an den Server schicken.
 
Hey,

danke für die ganzen Antworten. Es ging mir gar nicht um MC primär sondern eher allgemein, ob das überhaupt möglich ist. MC ist da eher das passende Beispiel weil der ein oder andere Service hat ja genau eine lokale Schnittstelle gebaut um eben nicht auf eine "lokale-remote-console" setzen zu müssen.
 
Irgendwie scheint es mir evtl. hilfreich, wenn Du mal die präzise Frage stellst, was Du machen möchtest .. unter Linux gibt es zig Möglichkeiten .. cronjobs, Bash-Srcipte, Java-Programme, Docker-Container (okay, die können in der Regel nicht in System eingreifen ) dann noch diverse Watchdogs und viele viele Monitoring Lösungen ..

Kommunikation ist auch auf vielen Ebenen Möglich .. Signals, Pipes, Filewatcher, diverse APIs
 
@madmax2010
Danke, das ist zwar nicht das was ich suche, das ermöglich mir jedoch den Server ingame neu zu starten, ohne dass ich an der Berechtigungsstruktur was ändern müsste.

@KeepCalm
mein Anliegen habe ich so genau wie Möglich beschrieben. Wenn man den MC-Server regular startet, also nicht über Systemd "übernimmt" es sozusagen die Konsole. Man kann dann nichts machen außer die echos die der Server ausgibt lesen und die Befehle (die sind die gleichen wie Ingame oder per RCON) einzugeben und wiederum deren Echo angezeigt bekommt. Die Echos sind ja auch z.B. im "systemd status minecraft".
 
Das & sorgt dafür, das der Prozess im Hintergrund läuft; Ausgaben auf dem STDOUT / STDERR wirds aber immer noch geben ... logged man sich aus, wird vermutlich auch der Prozess gestoppt .. hier wäre dann "nohup" angebracht ..
In einer System-D Unit wird alles vom STDOUT /STDERR ins Journal geleitet, es sei denn, der Prozess schreibt noch ein extra Logfile.
Das Journal wiederum kann man sich dann fortlaufend anzeigen mit

Code:
journactl -f -u <unitname>
(siehe https://wiki.ubuntuusers.de/systemd/journalctl/)

Lange Rede, kurzer Sinn .. Prozesse die keine Konsole haben und mit irgend einer Außenwelt reden sollen benötigen eine Schnittstelle .. da hast Du recht denn wenn diese OHNE Terminal laufen gibbet halt kein STDIN von dem evtl. Befehle gelesen werden können.
 
Zurück
Oben