Screen Session Dettach im Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
JimmyWayne
Beiträge: 1
Registriert: 15.05.2009 18:24:30

Screen Session Dettach im Script

Beitrag von JimmyWayne » 15.05.2009 18:30:30

Hallo liebe Community,

Ich versuche gerade verzweifelt ein Script hinzubekommen mit dem man einen Befehl an eine Screen Session schicken kann. Ich habe ca. 2 Stunden gegoogelt und zwar den Befehl screen -X -S SCREENNAME exec BEFEHL gefunden, allerdings klappt das nicht so ganz.
In dem Screen läuft ein Gameserver, nun möchte ich per PHP ein Script schreiben, mit dem man Befehle an den Server übergeben kann.

Falls jemandem eine andere Lösung einfällt wäre ich sehr dankbar. Gegebenenfalls wäre ein Onlineterminal des Screens auch sehr nützlich, denn da ist die Ausgabe dabei. Problem ist bei mir halt nur, das ich keinen SSH Zugriff geben will, weil der User sowieso a) nicht damit umgehen kann und b) das ganze für mich sehr unsicher ist, da man den Zugriff nicht wirklich 100% absichern kann.

Geht das ganze überhaupt?

mfg

Hamatoma
Beiträge: 120
Registriert: 10.08.2003 19:30:53
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Screen Session Dettach im Script

Beitrag von Hamatoma » 01.06.2009 23:17:10

Hi,
ich habe es ausprobiert:
Konsole 1:

Code: Alles auswählen

screen -dmS jonny  # Startet screen im Daemon-Modus, also keinem Terminal zugeordnet. Entspricht boot-Vorgang.
Konsole 2:

Code: Alles auswählen

screen -S jonny -x  # Zuordnung zu Screen, damit sieht man, was passiert.
Konsole 3:

Code: Alles auswählen

screen -S jonny -X exec echo "Es geht" # Kommando  echo "Es geht" in der Screen-Session ausführen. 
Unter Konsole 2 steht: "Es geht", das Kommando wurde also ausgeführt.

Unter "normalen Bedingungen", also in Terminals, funktioniert das.

Du willst das in PHP realisieren, d.h. das, was bei mir in Konsole 3 passiert, kann auch PHP absetzen (per system()-Funktion).
Wenn der Web-User die Ausgabe (von screen) sehen will, wird es umständlicher: Der Direktzugriff fällt flach, da der Webserver kein Terminal ist.
Du könntest aber ein doit-Kommando basteln:
Du schickst also das Kommando

Code: Alles auswählen

doit echo "Es geht"
an screen.
doit ist ein Script, das die Argumente als Kommando ausführt und die Ausgabe in eine Datei umleitet. Ist die Ausgabe fertig, wird diese Datei z.B. in lastcommand.txt umbenannt.
Im PHP-Script wartest Du, bis lastcommand.txt existiert und gibst diese Datei aus.
Mit dieser Methode kannst Du auch eine Historie von screen erstellen und mittels PHP ausgeben.
mfg
Hamatoma

Antworten