Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Bonjour a tous,
j'ai un script sh pour lancer, stoper, et voir le status de call of duty, le script fonctionne très bien via la console ssh putty.
#!/bin/sh
#je suis obliger de rajouter cela pour que ça fonctionne correctement je ne comprend pas pourquoi mais bon ça fonctionne ;)
cd /home/bedo/
#si je supprime cela ne fonctionne plus
APP_PATH=/home/bedo/
#fichier pid
PID_FILE=cod2.pid
#le port du serveur cod2
PORT=28960
#le nombre de slots pour le serveur
SLOTS=20
#le nom du fichier de configuration du serveur qui doit etre dans le repertoire main
CFG=server.cfg
#l'utilisateur unix qui lance le deamon
USER=bedo
#la prioriter nice de lancement du processus default 0 prioriter plus elever -20 moins elever 20 (perso je mais 10)
NICE=10
#pour les mods utiliser
FS_GAME=Modes
#download 0/1 desactiver/activer
DL=0
#upload tag et autre sur le serveur 0/1 desactiver/activer
UL=0
#fichier de log du serveur de jeux
LOG=team_cod2.log
if [ -r /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
LOG_BEGIN="log_begin_msg"
LOG_END="log_end_msg"
else
LOG_BEGIN="echo -n"
LOG_END=`printf "echo .\n"`
fi
test -x $APP_PATH/cod2_lnxded || exit 0
start() {
$LOG_BEGIN "Demarrage de Call of Duty 2 serveur: cod2_lnxded"
start-stop-daemon -S -u $USER -N $NICE -p $PID_FILE -m $PID_FILE \
-d $APP_PATH -b --exec ./cod2_lnxded \
+set dedicated 2 +exec $CFG +set fs_game $FS_GAME +set net_port $PORT +set sv_punkbuster 1 +set sv_maxclients $SLOTS +sv_allowupload $UL +sv_allowdownload $DL +g_log $LOG +g_logsync 1
$LOG_END $?
}
stop() {
$LOG_BEGIN "Arret de Call of Duty 2 : cod2_lnxded"
start-stop-daemon -K -p $PID_FILE -d $APP_PATH
$LOG_END $?
}
status() {
if [ -e $PID_FILE ]; then
echo "Call of Duty 2 est lancer sur le PID `cat $PID_FILE`"
else
echo "Call of Duty 2 n'est pas lancer"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
status)
status
;;
*)
log_success_msg "Utilisation: callofduty2-serveur-deamon {start|stop|reload|status}"
exit 1
;;
esac
exit 0jusque là aucun soucis sa fonctionne très bien.
Mon soucis et que j'aimerais lancer ce script via une interface php. j'ai un petit exemple qui me renvoi des erreurs.
le php :
echo shell_exec('/home/bedo/test.sh start');le script sh me renvoi juste :
Demarrage de Call of Duty 2 serveur: cod2_lnxded ...fail!
je récupére bien les lignes des echo du sh, mais le server ne démarre pas, les droits son ok sur le fichier cod2_lnxded.
Une petit idée ? ![]()
Hors ligne
Problème de permissions probablement.
Une "solution" à deux balles:
1/ Le site Web, quand tu veux démarrer CoD crée un fichier, disons /var/www/monsite/START_COD
2/ A intervalle régulier (crontab!) t'as un script shell qui regarde si le fichier /var/www/monsite/START_COD existe
--> si oui, le script supprime le fichier en question puis démarre code
Doît être possible de faire la même magouille pour arrêter le serveur de jeu.
Hors ligne
je ne pense pas qu'il s'agisse de soucis de permission vu que le php récupére bien les infos du sh si le server est lancé, inactif etc ....
Hors ligne
Vérifier qu'un process tourne n'a rien à voir avec l'exécuter.
Faut voir les permissions de fichier, mais si tu dis à ton serveur CoD d'écrire un pidfile dans un répertoire où t'as pas les permissions, il est très probable que ton serveur vautre misérablement.
Hors ligne
toutes les permissions sont ok, essayé en root, et autre compte avec les bonnes permissions, la j'avoue que je ne pige pas
Hors ligne
Faut se rappeler que via le site Web, tu exécutes très probablement en tant que "www-data" ou "nobody".
Avec root, heureusement que ca marche. ![]()
Hors ligne
donc je suppose qu'il y a moyen d'accorder a un user du group www-data les bonne permissions ? serait-ce chown user et nom de fichier ? merci de m'éclairer suis un peu perdu avec le system de permissions
Hors ligne