Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

22.05.2009, 19:03

Gameserver starten, beenden

Hi,
ich bin im moment dabei mein Gameserverinterface http://interface.worldwidewinners.de für Linux umzuschreiben.

Im Moment scheitere ich an der wichtigsten Funktion.
Den Server starten und beenden.

Das Interface basiert auf PHP.

Das Game sitzt im ordner /home/cod4/1public
Das Interface in /srv/www/vhosts/default/htdocs/web

Wie kann ich mit Hilfe einer PHP datei den Server starten bzw stoppen.
In der .sh gibts es einen Punkt der start und einen weiteren der stop heißt.

Brauche ich um den Server zu starten/stoppen eine SSH oder SSL Verbindung?

Ich würde gerne die PHP Datei so einfach wie möglich halten. Sie soll allerdings auch eine Rückmeldung geben, also ob der Server gestartet wurde order nicht, das gleiche mit stop.

Ich hoffe hier kann mir jemand weiterhelfen.

Danke schonmal.

Mfg
Andi

2

22.05.2009, 21:15

Ich vermute mit ".sh" meinst Du ein Shell-Script. Vermutlich erwartet es dann als Parameter "stop" oder "start", um die jeweilige Funktion auszuführen. Beachte jedoch, dass Du vielleicht eine Möglichkeit schaffen musst, das Script mit einem anderen Benutzer zu starten, denn ein Benutzer darf nicht einfach die Prozesse eines anderen beenden usw.; dabei musst Du höllisch auf Sicherheit achten, denn wenn eine nicht-escapte Variable aus PHP in die Kommandozeile gelangt, dann haben die bösen Cracker leichtes Spiel...

Ob das Script bei seiner Aufgabe Erfolg hatte oder nicht, wird i.d.R. über den sog. Exit-Status geregelt. Soviel ich weiß, kann man den mit einer der PHP-Ausführ-Funktionen auch irgendwie erfassen. Unabhängig vom Exit-Status oder der Funktion kannst Du aber auch einfach prüfen, ob der Prozess nach dem Script noch da ist bzw. die etwas seltsame Variante: Ob der Server am vorgesehenen Port noch eine Verbindung annimmt.

SSL und SSH bräuchtest Du dafür zwar nicht, doch wäre SSL, also HTTPS, auf jeden Fall eine gute Idee, da Du Dich möglichst geheim authentifizieren solltest, damit Bösewichter es schwerer haben. SSH mit Keys wäre auf jeden Fall auch die sicherere Variante, Ich halte es für eher leichtsinnig, einen HTTP(S)-Server zum Kontrollieren derartiger Dienste (bzw. eigentl. von Diensten generell) zu missbrauchen, besonders im unsicheren Netz und bei Anwendungen, die gerne mit hoher Priorität laufen und gerne mal das Neuste vom Ungetesteten sind.

... aber Du bist ja bestimmt schon ein großer Junge und weißt vermutlich genau auf was Du Dich einlässt, oder?

PS: ggf. Dokus lesen, da steht vielleicht was über das Script drin.

3

23.05.2009, 12:14

Hi
Danke Oziris

Das Interface sollte nur zur Privatennutzung sein, deshalb brauch ich auch nicht so auf Sicherheit zuachten.
Das Interface ist auch über .htacess Passwort gesichert.
Was ich noch vermeiden will ist MySQL zu benutzen.

Hier mal ein Shell-Script:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/sh
#
# Start the Counter-Strike dedicated server.
#

NAME=fun
DESC="fun"
PARAMS="+set loc_language 2 +set net_ip 80.86.81.56 +set net_port 28963 +set dedicated 2 +exec server.cfg +map_rotate +set sv_maxclients 26 +set ttycon 0 +set developer 0"
DIR=/home/sos/cod4/4fun
SCRIPT=cod4_lnxded

DAEMON=$DIR/$SCRIPT

case "$1" in
start)
   echo "Starte $DESC: $NAME"
   cd $DIR
   screen -d -m -S $NAME $DAEMON $PARAMS
   ;;

stop)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stoppe $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... Server gestoppt."
   else
       echo "Konnte keinen laufenden Server mit PID -- $DESC -- nicht finden"
   fi
   ;;

restart)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stoppe $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... Server gestoppt ... Kommando Start wird ausgeführt"
   else
       echo "Konnte keinen laufenden Server mit PID -- $DESC -- nicht finden ... Kommando Start wird ausgeführt"
   fi

   echo -n "Starte $DESC: $NAME"
   cd $DIR
   screen -d -m -S $NAME $DAEMON $PARAMS
   echo " ... Server gestartet."
   ;;

*)
   echo "Usage: $0 Parameter eingeben {start|stop|restart}"
   exit 1 
   ;;
esac

exit 0


Ist das mit Benutzer einrichten schwer bzw eine längere Sache?

Mfg
Andi

4

23.05.2009, 14:04

Zitat

Original von Andi1234
Ist das mit Benutzer einrichten schwer bzw eine längere Sache?

Weiß nicht. Eigentlich nicht, aber es kann auf so Sachen, wie z.B. den Port des Dienstes, die Rechte auf die Dateien oder die Trennung verschiedener Dienste (HTTP und Gameserver) über die Rechte ankommen und welche Möglichkeiten man für setuid hat (z.B. sudo oder was Spezielles).

5

24.05.2009, 23:48

hmm,

Kann mir bitte jemand ein einfaches PHP Script schreiben, mit dem ich ein Shell Script ausführen kann mit Parameter.

Mfg
Andi

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

25.05.2009, 09:27

du suchst die php-kommandos exec(), system(), popen() oder ähnliche kommandos.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

7

25.05.2009, 15:50

Ja kenn ich auch aber mein Problem ist das Parameter vom Shell Script, ich hab zum einen Start und Stop

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

8

25.05.2009, 17:45

wo ist das problem. der befehl ist ein string und da hängst du start oder stopp hinten an.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

9

25.05.2009, 20:20

Da schämt man sich ja auch PHP zu können...

Thema bewerten