SSH - Befehle an Minecraft Konsole mit Screen senden?

3 Antworten

/usr/bin/screen -S NAME -p 0 -X stuff "BEFEHL$(printf \\\\r)"

So funktioniert das beim MCHostPanel von Alanaktion

Ist aber PHP, vielleicht aber nützlich für dich

Woher ich das weiß:eigene Erfahrung – Hosting diverse Spigot/Bukkit Server sowie Forge

MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:33

Okay wenn ich einen Befehl eingebe (und nebenbei bei KiTTY im screen bin), steht das in der Befehlszeile: say hi$ (printf \r)

Also das "enter" funtkioniert irgendwie noch nicht

0
TopicsLP  22.10.2018, 22:36
@MarcelDerAdmin

der teil $(printf \\\\r) ist aus PHP um einen Linux Zeilenumbruch zu senden.

0
MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:40
@TopicsLP

Okay also der Code um den Befehl zu senden sieht so aus:

consoleWindow.AppendText(client.RunCommand("/usr/bin/screen -S server -p 0 -X stuff '" + consoleCommand.Text + "$(printf \\\\r)'").Result + Environment.NewLine + Environment.NewLine);

Das $(printf \\\\r) wird aber mit rein geschrieben wo man die Befehle üblicherweise eingibt.

Beispiel:

>say test??
[16:37:08 INFO]: [Server] test??
>
>say hi $(printf \\\\r)

Also das 'Enter' wird irgendwie nicht angenommen um es so zu sagen

0
TopicsLP  22.10.2018, 22:49
@MarcelDerAdmin

Ich glaube in etwa so ? Probier mal, hab leider keine direkte ahnung von C# bediene mich von stackoverflow.com

consoleWindow.AppendText(client.RunCommand("/usr/bin/screen -S server -p 0 -X stuff '" + consoleCommand.Text + @"\\r").Result + Environment.NewLine + Environment.NewLine);
0
MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:49
@TopicsLP

Vielen Vielen Dank!

Es hat geklappt! Ich bin dir wirklich sehr sehr dankbar!

Da ich das Programm ja entwickle, aber durch deine Hilfe weiterkam, wollte ich dich Fragen ob ich dich vielleicht dann in den Credits hinzufügen darf, wegen deine Hilfe hier denn es ist sozusagen eines der wichtigen Features.

Edit:

Es war das:

consoleWindow.AppendText(client.RunCommand("/usr/bin/screen -S server -p 0 -X stuff '" + consoleCommand.Text + "\\r'").Result + Environment.NewLine + Environment.NewLine);
0
TopicsLP  22.10.2018, 22:51
@MarcelDerAdmin

Klar, brauchst du infos von mir? Oder reicht dir mein gamertag ? (ist auf jeder Plattform für jedes Spiel TopicsLP)

0
MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:51
@TopicsLP

Das ist egal ich könnt dich auf verlinken. Zum Beispiel Instagram oder ähnliches.

0
MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:54
@TopicsLP

Okay ich werde deinen Twitter Account verlinken und ein kleines Dankeschön-Schreiben für deine Hilfe :-)

0
MarcelDerAdmin 
Beitragsersteller
 23.10.2018, 14:07
@TopicsLP

Hallo nochmal. Eine Frage gäbe es noch, und zwar diese:

https://www.gutefrage.net/frage/ssh---screen-output-anzeigen#answer-293971175

Also wie kann ich es machen dass jetzt der Output der Konsole in einer TextBoy angezeigt wird? Also wie das Grundsätzlich geht weiß ich aber

consoleWindow.AppendText(client.RunCommand("/usr/bin/screen -S server -p 0 -X stuff '" + consoleCommand.Text + "\\r'").Result + Environment.NewLine + Environment.NewLine);

Zeigt es nicht mehr in der TextBox consoleWindows an.

Kann ich das irgendwie mit 'screen -O' machen?

0
TopicsLP  23.10.2018, 17:29
@MarcelDerAdmin

Muss ich mir anschauen, wie man das wohl lösen kann.

Ich schau mal was ich finde

0
TopicsLP  23.10.2018, 17:41
@MarcelDerAdmin

Würde es zB wie folgt machen (linux befehle):

screen -S test -L screenlog.$(date '+%d.%m.%Y_%H.%M')

Startet einen screen Namens "test" und schreibt alles was in dem screen passiert in die Datei "screenlog.DATUM_UHRZEIT" du könntest vllt statt dem Datum und der uhrzeit eine Server ID oder Prozess id zur identifikation verwenden.

und dann kannst du mit dem befehl:

 tail -n 60 screenlog.23.10.2018_17.35

dir die Letzen 60 Zeilen ausgeben

tail -n ZEILEN DATEI

Hoffe das hilft dir weiter.

Und das ganze machst du vllt alle 15 Sekunden oder so.

0
MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:26

Vielen Dank ich werde es ausprobieren

Heißt es ich kann

/usr/bin/screen -S NAME -p 0 -X stuff "op test"

machen?

0

Du musst erst in den screen und dann einfach die Commands ohne ein / eingeben.


MarcelDerAdmin 
Beitragsersteller
 22.10.2018, 22:44

Schon klar ja aber ich möchte mit einem "Non-Terminal" programm verwenden. Mit der Antwort von TopicsLP klappt es, nur werden die Befehle noch nicht "gesendet".

Das 'Enter' fehlt sozusagen

0

Du musst den screen öffnen und darein dann die befehle

Woher ich das weiß:Studium / Ausbildung – Informatik Studium