kleines .sh script zur steuerung eines AA-Servers

l34trul3r

New Member
Hallo Community,

ich hoffe es passt hier rein.
Ich habe mir aus dem Internet einen kleinen Code, welcher Starten, Stoppen und Restarten eines Americas Army Servers ermöglicht, in eine .sh Datei gespeichert.

Der Code wäre:

Code:
#! /bin/sh 

clear 
DIR=/path/to/directory
DAEMON=$DIR/server-bin
# Internet-server: 
PARAMS="global $2 -nohomedir .INI=system.ini" 
NAME=aao 
DESC="AA Server 

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

stop) 
if [[ `screen -ls |grep $NAME` ]] 
then 
echo -n "Stopping $DESC: $NAME" 
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'` 
echo " ... done." 
else 
echo "Coulnd't find a running $DESC" 
fi 
;; 

restart) 
if [[ `screen -ls |grep $NAME` ]] 
then 
echo -n "Stopping $DESC: $NAME" 
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'` 
echo " ... done." 
else 
echo "Coulnd't find a running $DESC" 
fi 

echo -n "Starting $DESC: $NAME" 
cd $DIR 
screen -d -m -S $NAME $DAEMON $PARAMS 
echo " ... done." 
;; 

online) 
if [[ `screen -ls |grep $NAME` ]] 
then 
echo "Online" 
else 
echo "Offline" 
fi 
;; 

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

Muss ich die Datei per PHP also exec(script.sh) ausführen?
Wenn ja: es hat bei mir auf der PHP-Seite nur weiß angezeigt. Chmod -x hab ich gesetzt für das script.
Owner des scripts und der PHP-Datei ist in dem Fall der owner der domain/ des webspace.

Wäre super wenn jemand was wüsste.
Gruß
l34t
 
Schau halt mal auf der Console nach, ob der AA-Server nach Aufruf durch das PHP-Script läuft (ps aux). Ggfs. muss der absolute Pfad zum Script angegeben werden und natürlich gelten die üblichen Einschränkungen, die in der php.ini festgelegt sind (basedir, etc).

Dass Du keine Ausgabe des Scripts siehst, kann z.B. daran liegen, dass das PHP-Script kein gültiges HTML erzeugt, dass der Browser anzeigen kann. Starte das PHP-Script doch mal auf der Kommandozeile und schau Dir die Ausgaben genau an -- wahrscheinlich siehst Du dann den Fehler. Dass Du beim exec() noch einen Parameter übergeben musst, ist Dir schon klar, oder? Zumindest hast Du das nur etwas wage angedeutet.
 
Back
Top