OVH Community, votre nouvel espace communautaire.

[How-To] Script de démarrage (init.d) pour serveur de jeu (hl,hl2,cs,dod ...)


schwarz
24/06/2012, 23h38
/etc/init.d/jailbreak.sh: line 39: syntax error near unexpected token `('
/etc/init.d/jailbreak.sh: line 39: ` echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"'

bug? ou je me suis trompe?

yepos
06/01/2011, 13h56
Bonsoir,

J'ai un petit sushi avec mon script SH pour mon serveur CZ.

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################
# Nom de l'utilisateur
SRCDS_USER="servdm"

# Nom du screen
SRCDS_NAME="$screen"

# Binaire du serveur
SRCDS_BIN="./hlds_run"

# Repertoire du serveur
SRCDS_PATH="/home/serveur/servdm/steam/"

# Options de lancement
SRCDS_OPTS="-game czero \
    +maxplayers 32 \
    +map de_dust2_cz \
    +port 27030 \
    +exec server.cfg \
    +fps_max 1000 \
    -autoupdate \
    -pidfile servdm.pid \
    +ip 94.23.222.71 \
    -tos"
# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "screen -AdmSL ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    srcds_patch
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        srcds_stop
    ;;
    start)
        srcds_start
    ;;
    restart)
        srcds_restart
    ;;
    update)
        srcds_update
    ;;
    *)
        usage
esac

exit 0
J'ai pourtant bien mis mon user, et voici ce qu'il m'indique quand je le stop :
Remove dead screens with 'screen -wipe'.

Et quand je le start :
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]

Error: Unknown option -game


Quelqu'un saurait pourquoi ??? J'ai plusieurs serveurs qui ont un script SH et ils merdent aussi
Merci à vous

xtazzzz
19/08/2009, 10h31
C'est pas faut, mais je débute et avec les variables HLDS_name ; HLDS_BIN ; HLDS_OPTS ; HLDS_User ; je trouvais ça compliquée.C'est mon point de vue.

Mais je respect ceux qui on pensée a crée ce script qui ma permis d' apprendre.

A par sa, j'ai un soucis pour mon crontab, j'ai la vague impression qu'il ne fonctionne pas.J'ai fait un "crontab -e" puis "ctrl+o" puis "ctrl+x".

J'ai aussi crée un "restart.sh" a qui je lui es attribuer les droits avec un "chmod +x restart.sh puis "update-rc.d restart.sh defaults 99"

CRONTAB

Code:
# redémarrage serveur
0       7      *      *     *     /etc/init.d/restart.sh
SH

Code:
#!/bin/sh

#Lancement des serveurs

cd /etc/init.d/

#1.5
./cs1.5.sh restart

#1.6
./cs1.6.sh restart
Peux tu m'aider ?

neospeed2
18/08/2009, 19h33
Personnellement je ne suis pas fan de ton script pour la simple raison que tu a créer une seul variable qui est en plus inutile. Et que tu n'utilise même pas dans le besoin.
Tu aurais due créer une variable pour chaque option mis à hlds_run. Ainsi que le chemin.

Donc script non facile à modifier pour une personne débutante, et une mauvaise utilisation de variables. Cela est un script plutôt personnel et non pour un partage en communauté.

xtazzzz
18/08/2009, 15h50
Après plusieurs testes, je pense que ce scripte est vraiment utile mais assez difficile a exécuter.Pour ma part j'ai donc pris ce sripte et modifiée avec celui de Speedy et sa fonctionne parfaitement.

J' ai aussi utiliser ce tuto qui me semble très bien expliqué comment crée un script :http://www.tavuu.net/linux/utilisati...ge-du-systeme/

Voici mon script :

Code:
#!/bin/sh

HLDS_NAME:"cs"

usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${HLDS_NAME} (stop|start|restart)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

hlds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    cd /home/cs/steam/
    su xxx -c 'screen -AdmSL cs taskset -c 0 ./hlds_run -game cstrike +maxplayers 12 +map de_dust2 +port 27015 -sys_ticrate 10000 -tos -ticrate 100 -autoupdate +servercfgfile server1.cfg'
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su match -c "screen -dr ${HLDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        hlds_stop
    ;;
    start)
        hlds_start
    ;;
    restart)
        hlds_restart
    ;;
    *)
        usage
esac

exit 0
Il es plus simple je pense et tout le monde pourra comprendre

xtazzzz
17/08/2009, 19h54
Merci beaucoup.Sa marche mais pas sous un autre utilisateur que le root.

Ya t'il un moyen?

Peu etre rajouter une commande password non?

neospeed2
12/08/2009, 18h04
Oui tu peut tout à fait ajouter : taskset -c 0 dans le script.

Ensuite pour ton erreur c'est tout à fait normal. Fait ceci


cd /etc/init.d
sh ./cs.sh restart

Si cela ne fonctionne pas regarde les droits et regarde si le fichier cs a pour extension ".sh"

xtazzzz
06/08/2009, 14h49
Bonjour , je m' m'intéresse a ce script et je voudrais savoir si on peu le lancer le screen avec un "-AdmSL cs1.6 taskset -c 0"?

De plus je l'ai essayer, rendu exécutable mais quand je veux faire un restart via " ./etc/init.d/cs restart " sa me mais ceci " -bash: ./etc/init.d/cs: Aucun fichier ou répertoire de ce type "

Shinou93
06/07/2009, 21h30
Voila le problème est résolu! en fait c'était due au fait que je modifiait le script via Vista, et donc il n'était pas vue de la bonne manière par Linux :/.

J'expose ma solution au cas où une personne a un jours le même problème que moi,
il faut donc se rendre:
/etc/init.d

Et utiliser la commande perl:
perl -i -pe 's/\r//g' fichier

cela devrait normalement résoudre le problème.

Je vous remercie donc à tous ceux qui m'ont aidés!

Shinou93
06/07/2009, 15h55
C'est à dire de caractères invisible?
Enfin comment je peux voir si il y en a?
Merci de ton aide

Loup Artic
05/07/2009, 13h19
Vérifie si tu as pas de caractères invisibles dedans.

Shinou93
05/07/2009, 01h21
Petit up?
Personne ne peut m'aider?
S'il vous plait

Shinou93
01/07/2009, 12h54
Bon.... Toujours rien, et pourtant deuxieme fois que je reinstalle debian....
voici le script que j'utilise (le chemin est bon,etc...)

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################

# Nom de l'utilisateur
HLDS_USER="root"

# Nom du screen
HLDS_NAME_SERV_1="serveurffa"
HLDS_NAME_SERV_2="serveurwar"
HLDS_NAME_SERV_3="serveurdem"


# Binaire du serveur
HLDS_BIN="./hlds_run"

# Repertoire du serveur
HLDS_PATH_SERV_1="/home/serveurcs/serveurffa/steam/"
HLDS_PATH_SERV_2="/home/serveurcs/serveurwar/steam/"
HLDS_PATH_SERV_3="/home/serveurcs/serveurdem/steam/"

# Options de lancement
HLDS_OPTS_SERV_1="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 24 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27015 \
	+fps_max 100"

HLDS_OPTS_SERV_2="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 12 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27016 \
	+fps_max 100"

HLDS_OPTS_SERV_3="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 24 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27017 \
	+fps_max 100"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${HLDS_NAME} (stop|start|restart|update)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

hlds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_1} ${HLDS_BIN} ${HLDS_OPTS_SERV_1}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_2} ${HLDS_BIN} ${HLDS_OPTS_SERV_2}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_3} ${HLDS_BIN} ${HLDS_OPTS_SERV_3}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_1} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_2} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_3} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    hlds_patch
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        hlds_stop
    ;;
    start)
        hlds_start
    ;;
    restart)
        hlds_restart
    ;;
    update)
        hlds_update
    ;; 
    *)
        usage
esac

exit 0

Et voila le message d'erreur que je reçois lorsque je le lance:
: command not found 5:
: command not found 9:
: command not found 12:
: command not found 17:
: command not found 18:
: command not found 21:
: command not found 26:
: command not found 37:
: command not found 47:
: command not found 57:
: command not found 60:
'/serveurs.sh: line 64: syntax error near unexpected token `{
'/serveurs.sh: line 64: `usage() {

En vous remerciant de l'aide que vous m'apporterez car la je coince dur ^^'

neospeed2
23/06/2009, 15h36
Donc déjà tu a plusieurs erreur dans ton script tu défini :

Code:
HLDS_USER_SERV_1="root"
HLDS_USER_SERV_2="root"
HLDS_USER_SERV_3="root"
comme c'est le même user mais seulement :

Code:
HLDS_USER="root"
Si tu veu laisser ta metonne change tes variable HLDS_USER et remplacer les par HLDS_USER_SERV_1...

Juste pour infos il ne faut jamais lancer un serveur sous root c'est une question de sécurité. Ensuite dans tes chemin mes un "/" (slash) avant "home" car sinon il ne peut pas trouvé le chemin. Ensuite mon script comme je te l'ai dit il n'est peut être pas bon, j'ai supprimer la fonction patch qui ne sert a rien (faut l'integret directement dans la fonction update). Donc tu peut supprimer le patch à la fin de ça :
Code:
echo "Usage: ${HLDS_NAME} (stop|start|restart|update|patch)"
se qui donne :
Code:
echo "Usage: ${HLDS_NAME} (stop|start|restart|update)"
Cette dernière erreur n'est pas très importante mais pour l'aspect graphique c'est mieu.

Shinou93
23/06/2009, 09h34
Voila le script que j'essaye d'utiliser sans grand succèes :/

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################

# Nom de l'utilisateur
HLDS_USER_SERV_1="root"
HLDS_USER_SERV_2="root"
HLDS_USER_SERV_3="root"

# Nom du screen
HLDS_NAME_SERV_1="serveurffa"
HLDS_NAME_SERV_2="serveurwar"
HLDS_NAME_SERV_3="serveurdem"


# Binaire du serveur
HLDS_BIN="./hlds_run"

# Repertoire du serveur
HLDS_PATH_SERV_1="home/serveurcs/serveurffa/steam/"
HLDS_PATH_SERV_2="home/serveurcs/serveurwar/steam/"
HLDS_PATH_SERV_3="home/serveurcs/serveurdem/steam/"

# Options de lancement
HLDS_OPTS_SERV_1="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 24 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27015 \
	+fps_max 100"

HLDS_OPTS_SERV_2="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 12 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27016 \
	+fps_max 100"

HLDS_OPTS_SERV_3="
	-game czero \
	-console \
	-tickrate 1000 \
	+maxplayers 24 \
	+map de_dust2_cz \
	-ip 213.251.185.130 \
	-port 27017 \
	+fps_max 100"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${HLDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

hlds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_1} ${HLDS_BIN} ${HLDS_OPTS_SERV_1}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_2} ${HLDS_BIN} ${HLDS_OPTS_SERV_2}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_3} ${HLDS_BIN} ${HLDS_OPTS_SERV_3}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_1} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_2} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_3} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    hlds_patch
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        hlds_stop
    ;;
    start)
        hlds_start
    ;;
    restart)
        hlds_restart
    ;;
    update)
        hlds_update
    ;; 
    *)
        usage
esac

exit 0

neospeed2
22/06/2009, 19h09
oula c'est bizarre tu doit te tromper quelques part, le chemin est bon? change de droits mais bon sa metonne fortement que sa soit pas ça

Shinou93
21/06/2009, 13h37
Re :/

Bon apres avoir changé de os et être passé sous Debian, et bah le script que j'ai donné un peut plus haut m'affiche la meme chose :
: command not found:
: command not found:
: command not found2:
: command not found5:
: command not found8:
: command not found1:
: command not found0:
: command not found3:
'erveurs.sh: line 37: syntax error near unexpected token `{
'erveurs.sh: line 37: `usage() {

J'ai donc ensuite utilisé le script pour trois serveurs et la meme problème:
: command not found 5:
: command not found 9:
: command not found 14:
: command not found 19:
: command not found 20:
: command not found 23:
: command not found 28:
: command not found 38:
: command not found 47:
: command not found 56:
: command not found 59:
'/serveurs.sh: line 63: syntax error near unexpected token `{
'/serveurs.sh: line 63: `usage() {

Je ne sais plus quoi faire :/

Shinou93
21/06/2009, 09h32
Ok ok, bah je te remercie beaucoup pour l'aide que tu m'a apporté

neospeed2
20/06/2009, 17h08
Biensur il suffit de créer des variables pour un autre serveur exemple :

Code:
# Nom de l'utilisateur
HLDS_USER_SERV_1="Mon-user"
HLDS_USER_SERV_2="Mon-user"
HLDS_USER_SERV_3="Mon-user"

# Nom du screen
HLDS_NAME_SERV_1="serveurffa"
HLDS_NAME_SERV_2="serveurwar"
HLDS_NAME_SERV_3="serveurgg"


# Binaire du serveur
HLDS_BIN="./hlds_run"

# Repertoire du serveur
HLDS_PATH_SERV_1="/home/serveurffa"
HLDS_PATH_SERV_2="/home/serveurwar"
HLDS_PATH_SERV_3="/home/serveurgg"

# Options de lancement
HLDS_OPTS_SERV_1="-game czero \
    -console \
    -tickrate 1000 \
    +maxplayers 24 \
    +map de_dust2_cz \
    -ip 213.251.xxx.xxx \
    -port 27015 \
    +fps_max 100"

HLDS_OPTS_SERV_2="-game czero \
    -console \
    -tickrate 1000 \
    +maxplayers 18 \
    +map de_dust2_cz \
    -ip 213.251.xxx.xxx \
    -port 27016 \
    +fps_max 100"

HLDS_OPTS_SERV_3="-game czero \
    -console \
    -tickrate 1000 \
    +maxplayers 20 \
    +map de_dust2_cz \
    -ip 213.251.xxx.xxx \
    -port 27017 \
    +fps_max 100"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${HLDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

hlds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_1} ${HLDS_BIN} ${HLDS_OPTS_SERV_1}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_2} ${HLDS_BIN} ${HLDS_OPTS_SERV_2}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME_SERV_3} ${HLDS_BIN} ${HLDS_OPTS_SERV_3}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_1} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_2} -X quit"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME_SERV_3} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    OWD=`pwd`
    cd $HLDS_PATH_SERV_1
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_2
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $HLDS_PATH_SERV_3
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    hlds_patch
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        hlds_stop
    ;;
    start)
        hlds_start
    ;;
    restart)
        hlds_restart
    ;;
    update)
        hlds_update
    ;; 
    *)
        usage
esac

exit 0
Euh je ne sais pas si il est bon là je l'ai fait en 2 sec mais se juste pour te montré en gros comment on fait


Mais après voila la sa allume et stop et met à jour tout les serveur en même temp. Après tu peut faire un truc mais bon se plus long a expliquer genre pour démarrer le serv 1 faudra que tu tape :

sh ./nomscript.sh start_1

le 2

sh ./nomscript.sh start_2

Mais bon là se un script plus long a faire

Shinou93
20/06/2009, 13h14
Ah ok ok, bon je pense que je vais passer sous debian alors :O
Je te remercie quand meme de ton aide ^^.
Derniere question,
est ce que je peux mettre trois serveurs sur ce script?

neospeed2
20/06/2009, 12h51
Donc je vien de tester ton script, il fonctionne niquel, cela doit venir du fait que tu est sur gentoo 2008 32 bit. Je peut juste te dire que se script fonctionne sur Ubuntu et Debian mais après les autres distribution je sais pas. Mais gentoo n'étant pas basé sur Debian, les commandes doivent être différentes, à confirmer. Désolé donc de pas pouvoir t'aider.

Shinou93
19/06/2009, 20h10
Bonjour, pour commencer je te remercie d'avoir répondu a ma demande, voici donc le script comme tu me le demande ^^

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################

# Nom de l'utilisateur
HLDS_USER="Mon-user"

# Nom du screen
HLDS_NAME="serveurffa"

# Binaire du serveur
HLDS_BIN="./hlds_run"

# Repertoire du serveur
HLDS_PATH="/home/etc..."

# Options de lancement
HLDS_OPTS="-game czero \
    -console \
    -tickrate 1000 \
    +maxplayers 24 \
    +map de_dust2_cz \
    -ip 213.251.xxx.xxx \
    -port 27015 \
    +fps_max 100"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${HLDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

hlds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $HLDS_PATH
    su ${HLDS_USER} -c "screen -AmdS ${HLDS_NAME} ${HLDS_BIN} ${HLDS_OPTS}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${HLDS_USER} -c "screen -dr ${HLDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    hlds_stop
    OWD=`pwd`
    cd $HLDS_PATH
    su ${HLDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    hlds_patch
    hlds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

hlds_patch () {
	echo "---------------------------------------------------------------------"
	echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
	echo "---------------------------------------------------------------------"
	echo "Resultat :"
	${HLDS_PATH}czero/gameinfopatch.sh
	echo "Copie du fichier motd.bak en motd.txt"
	rm -f ${HLDS_PATH}czero/motd.txt
	cp ${HLDS_PATH}czero/motd.bak ${HLDS_PATH}czero/motd.txt
	echo "Attribution des droits"
	chown ${HLDS_USER} ${HLDS_PATH}czero/motd.txt
	chown ${HLDS_USER} ${HLDS_PATH}czero/gameinfo.txt
	echo "---------------------------------------------------------------------"
	echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
	echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        hlds_stop
    ;;
    start)
        hlds_start
    ;;
    restart)
        hlds_restart
    ;;
    update)
        hlds_update
    ;;
    patch)
        hlds_patch
    ;;  
    *)
        usage
esac

exit 0
Si tu veux, j'ai juste utilisé le script qui est à la première page, et j'ai modifier afin que ça soit en HLDS (hl1) et non SRCDS(hl2 je crois)

neospeed2
19/06/2009, 18h02
Donc déjà pour lancer un sh :

Code:
sh ./nomduscript.sh
Ensuite cela vient un l'intérieur du script si tu a encore l'erreur peut être les commentaire que tu a décommenté, ou bien tu ne commance pas ton script par

Code:
#! /bin/bash
Fait voir ton code pour qu'on puisse t'aider plus facilement.

Pour affiché ton code tu le met dans les balises code stp, ("[ CODE ]ton code[ /CODE ]")

Shinou93
18/06/2009, 22h40
Bonsoir, voila, en fait j'ai un petit problème au niveau du script de rom1.

Au moment de lancer donc le script.sh avec la commande "sh nomduscript.sh"
le serveur me répond

: command not found:
: command not found:
: command not found2:
: command not found5:
: command not found8:
: command not found1:
: command not found0:
: command not found3:
'erveurs.sh: line 37: syntax error near unexpected token `{
'erveurs.sh: line 37: `usage() {

N'étant pas trop expert en la matière je me tourne vers vous afin de m'éclairer .

Je vous remercie d'avance ^^.

PS: je suis sous gentoo 2008 32 bit.

neospeed2
16/02/2009, 14h24
Voici sont tuto :

http://forum.ovh.com/showthread.php?t=43989

ICI

papykun
13/02/2009, 21h46
Citation Envoyé par argent80
salut
il a l'air pas mal ton panel neospeed mais voila apres plusieur test il fonctionne pas cher moi peut etre un petit tuto serais la bienvenue parce que la je nage
Assez d'accord avec toi, j'arrive même pas à m'y connecter :/

argent80
13/02/2009, 19h43
salut
il a l'air pas mal ton panel neospeed mais voila apres plusieur test il fonctionne pas cher moi peut etre un petit tuto serais la bienvenue parce que la je nage

neospeed2
09/02/2009, 13h53
Voici un panel en PHP qu'on a put créer avec un ami. Je m'en sert souvent et il est parfait pour tout se qui est de Start, Reboot, Stop.

ICI

Petit Morceau de code :

Code:
switch($_GET['do']) {
	case 's':
		if(!authorized2server($server))  fuck_pirates();
		
		if(exec($pgrep_cmd.'SCREEN.*'.$server) != '0')
			mdie('Le serveur est déjà lancé !');
		
		passthru($cmdprefix .$cssdir .$server.'/start.sh', $res);
		if($res == 0) print '

Serveur lancé.

'; else mdie($contact.' pour lancer le serveur manuellement.'.$cmdprefix .$cssdir .$server.'/start.sh'); ScheduleReload(); break; case 'k': if(!authorized2server($server)) fuck_pirates(); if(exec($pgrep_cmd.'SCREEN.*'.$server) == '0') mdie('Le serveur n\'est pas lancé !'); passthru($cmdprefix. $pkill_cmd. $server); if($res == 0) print '

Serveur stoppé.

'; else mdie('Si le serveur tourne réellement, '.$contact.' pour fermer le serveur manuellement.'); ScheduleReload(); break; case 'r': if(!authorized2server($server)) fuck_pirates(); if(exec($pgrep_cmd.'SCREEN.*'.$server) == '0') mdie('Le serveur n\'est pas lancé !'); passthru($cmdprefix. $pkill_cmd. $server); passthru($cmdprefix .$cssdir .$server.'/start.sh', $res); if($res == 0) print '

Serveur rebooté.

'; else mdie('Si le serveur tourne réellement, '.$contact.' pour fermer le serveur manuellement.'); ScheduleReload(); break; default: echo '

Serveurs CSS

'; print_startstop_link('FFA', 'Serveur_FFA', 27015); print_startstop_link('AIM', 'Serveur_AIM', 27019); print_startstop_link('GG', 'Serveur_GG', 27013); print_startstop_link('ESL MID #Team 1', 'Serveur_ESL_1', 27016); print_startstop_link('ESL MID- #Team 2', 'Serveur_ESL_MID', 27014); print_startstop_link('ESL LOW+ #Team 3', 'Serveur_ESL_LOW', 27017); print_startstop_link('Training', 'Serveur_Training', 27018); print_startstop_link('Projet (NOT TOUCH)', 'Serveur_Projet', 27030); echo '

Serveurs Teewars

'; print_startstop_link('1', 'Serveur_Teewars', 8303); }

dark vador 008
12/12/2008, 14h23
J'ai trouvé un début de solution pour le script ceux qui ont le problème du genre,ils lancent leurs script mais rien ne se passe
Mais bon niveau sécurité c'est pas le top

http://forum.ovh.com/showthread.php?t=41495


à voir

Ulrar
26/10/2008, 13h58
Pour l'interface web, le coup du script perl, ça fait mal =/.

c'est un peu gros lourd et lent, non ?
En php on peut executer des commandes shell, en une ligne le probleme est reglé.
Niveau securité c'est pas pire que le script perl qui verifie les fichiers, il suffit de pas laisser la posibilitée de tapé les commandes, faire genre un bouton pour executé les commandes predefinie, et ça revient au meme que le script perl, mais en plus rapide ...

La commande exec

Cednow
25/10/2008, 17h40
Bonjour j'ai un petit souci avec le script pour le lancer automatiquement:

sa me met juste les lignes début et fin de script.

---------------------------------------------------------------------
Lancement du serveur : Debut de la sequence
---------------------------------------------------------------------
---------------------------------------------------------------------
Lancement du serveur : Fin de la sequence
---------------------------------------------------------------------

Voici le script:
#!/bin/sh
#############################################
## Script de lancement des serveur ##
#############################################

#############################################
## Début des variables ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="serveurcss"

# Nom du screen
SRCDS_NAME="serveur 24 slots"

# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Repertoire du serveur
SRCDS_PATH="/home/serveurcss/serveurcss1/steam/"

# Options de lancement
SRCDS_OPTS="-game cstrike \
-ip 91.xxx.xxx.xxx \
-port 27019 \
-tickrate 100 \
+maxplayers 24 \
+map de_dust2 \
+mp_dynamicpricing 0"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game cstrike -command update"

#############################################
## Fin des variables ##
#############################################
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}

if [ -z $1 ]; then
usage
fi

srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "screen -dmS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_update() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "${STEAM_UPDATE}"
cd $OWD
srcds_patch
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_patch () {
echo "---------------------------------------------------------------------"
echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
echo "---------------------------------------------------------------------"
echo "Resultat :"
${SRCDS_PATH}dod/gameinfopatch.sh
echo "Copie du fichier motd.bak en motd.txt"
rm -f ${SRCDS_PATH}dod/motd.txt
cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}dod/motd.txt
echo "Attribution des droits"
chown ${SRCDS_USER} ${SRCDS_PATH}dod/motd.txt
chown ${SRCDS_USER} ${SRCDS_PATH}dod/gameinfo.txt
echo "---------------------------------------------------------------------"
echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
patch)
srcds_patch
;;
*)
usage
esac

exit 0

J'ai fait le chmod /dev/ptmx
mais il ne se lance kan meme pas.

Merci d'avance

apo
29/06/2008, 18h11
Bonjour !
Je souhaiterai savoir si il existe un équivalent de ton scripte mais pour que sa soi 2 serveur cod4 et un serveur TS qui se lance au démarrage et s'arrêtent proprement au reboot machine ?!
D'avance merci

dark vador 008
29/06/2008, 14h59
J'ai un problème avec le script,mes serveurs sont sur counter strike Condition zero

au reboot de la machinne(dédié) le serveur de jeux se lance

Mais lorsque je désire stoper,redemarer le serveur de jeux voici un exemple de ce qu'il m'affiche

Code:
ns21943:~# /etc/init.d/demserv.sh stop
---------------------------------------------------------------------
Arret du serveur : Debut de la sequence
---------------------------------------------------------------------
There are several suitable screens on:
        2793.ffa        (Detached)
        2885.ffa        (Detached)
        2919.ffa        (Detached)
        2956.ffa        (Detached)
        2980.ffa        (Detached)
        3645.ffa        (Detached)
Use -S to specify a session.
---------------------------------------------------------------------
Arret du serveur : Fin de la sequence
---------------------------------------------------------------------
Je ne sais pas pourquoi cela ne fait rien du tout de l'action désirée

voici mon script

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables FFA        ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="vador"

# Nom du screen
SRCDS_NAME="ffa"

# Binaire du serveur
SRCDS_BIN="./hlds_run"

# Repertoire du serveur
SRCDS_PATH="/usr/games/jeux/cz/steam01/"

# Options de lancement
SRCDS_OPTS="-game czero +maxplayers 32 +map de_dust2_cz +port 27015 +sys_ticrate 100"


# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game czero -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    srcds_patch
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_patch () {
	echo "---------------------------------------------------------------------"
	echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
	echo "---------------------------------------------------------------------"
	echo "Resultat :"
	${SRCDS_PATH}dod/gameinfopatch.sh
	echo "Copie du fichier motd.bak en motd.txt"
	rm -f ${SRCDS_PATH}dod/motd.txt
	cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}dod/motd.txt
	echo "Attribution des droits"
	chown ${SRCDS_USER} ${SRCDS_PATH}dod/motd.txt
	chown ${SRCDS_USER} ${SRCDS_PATH}dod/gameinfo.txt
	echo "---------------------------------------------------------------------"
	echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
	echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        srcds_stop
    ;;
    start)
        srcds_start
    ;;
    restart)
        srcds_restart
    ;;
    update)
        srcds_update
    ;;
    patch)
        srcds_patch
    ;;  
    *)
        usage
esac

exit 0

leclaude
10/06/2008, 21h06
Bonjour,
Je me casse la tête depuis un moment sur un script de démarrage et je suis content d'avoir trouvé celui la.
Il y a juste un truc que je ne comprends pas.
Ces lignes ne fonctionne pas chez moi.

OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
cd $OWD

Je n'ai pas le chemin qui se met dans la variable OWD j'ai juste les lettres pwd ?
Cela ne m' empêche pas d'exécuter le script je les ai supprimé.

Merci pour ce script

k3nott
05/06/2008, 12h00
Bonjour,

j'aimerais créer un script pour lancer mes serveurs rapidement en tapant une commande simple du genre : exec xxx
Pour éviter de ma taper à chaque fois la ligne de commande ./srcds_run etc...
Mais je ne veux pas que ce script s'exécute au démarrage.
Je ne sais pas comment faire.
Merci.

mimo007
03/04/2008, 19h28
Citation Envoyé par mimo007
Bonjour,
Merci pour le script il marche a merveille
Par contre pourriez-vous me dire svp comment récuperer la sortie de la console vers un autre fichier, car l'activation des logs via le fichier de configuration sont :
- Un par minute
- Pas trop de détail

Merci d'avance
Personne n'a une solution pour ceci

mimo007
01/04/2008, 22h02
Bonjour,
Merci pour le script il marche a merveille
Par contre pourriez-vous me dire svp comment récuperer la sortie de la console vers un autre fichier, car l'activation des logs via le fichier de configuration sont :
- Un par minute
- Pas trop de détail

Merci d'avance

galerien
25/03/2008, 18h44
su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
su ${SRCDS_USER} -c "screen -dmS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"

peut être est ce ça.

Sinon,

Merci pour cette contribution, ça marche nickel.

alrikvidal
04/03/2008, 23h00
J'ai le meme probleme, le script me marque Debut et fin de la sequence instantanement sans lancer le serveur. voici mon script

Merci de votre aide je debute sous debian et j'ai beau avoir utilisé mon ami google je n'ai pas trouver de solution

#!/bin/sh
#############################################
## Script de lancement des serveur ##
#############################################

#############################################
## Début des variables ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="root"

# Nom du screen
SRCDS_NAME="serveur"

# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Repertoire du serveur
SRCDS_PATH="/home/serveur/hlds/"

# Options de lancement
SRCDS_OPTS="-game cstrike \
-console \
-tickrate 100 \
+maxplayers 12 \
+map de_dust2 \
-ip 91.121.82.221 \
-port 27015 \
+fps_max 100"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game cstrike -command update"

#############################################
## Fin des variables ##
#############################################
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}

if [ -z $1 ]; then
usage
fi

srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_update() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "${STEAM_UPDATE}"
cd $OWD
srcds_patch
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_patch () {
echo "---------------------------------------------------------------------"
echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
echo "---------------------------------------------------------------------"
echo "Resultat :"
${SRCDS_PATH}cstrike/gameinfopatch.sh
echo "Copie du fichier motd.bak en motd.txt"
rm -f ${SRCDS_PATH}cstrike/motd.txt
cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}cstrike/motd.txt
echo "Attribution des droits"
chown ${SRCDS_USER} ${SRCDS_PATH}cstrike/motd.txt
chown ${SRCDS_USER} ${SRCDS_PATH}cstrike/gameinfo.txt
echo "---------------------------------------------------------------------"
echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
patch)
srcds_patch
;;
*)
usage
esac

exit 0

Rom1
26/01/2008, 13h05
Il est possible de se passer du patch gameinfo en utilisant un fichier .vdf pour charger metamod source. Voici un générateur : http://www.metamodsource.net/?go=vdf

madrippeur
26/01/2008, 09h27
Bonjour à vous,
Je n'arrive pas a trouver le script pour faire le patch du gameinfo.
En auriez vous un sous la main, ou pourriez vous me dire ou le trouver s'il vous plait ?

Merci tout plein d'avance

Rom1
02/10/2007, 13h12
Et en cherchant 2min sur Google ?
http://linuxfr.org/forums/15/7853.html

Gyakatsuki
01/10/2007, 08h50
Bonjour, je viens de reprendre ce script pour lancer mon serveur cs:source mais apparement il nne veut pas se lancer.

Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="root"

# Nom du screen
SRCDS_NAME="csswar1"

# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Repertoire du serveur
SRCDS_PATH="/home/csswar1/"

# Options de lancement
SRCDS_OPTS="-game cstrike \
    -ip 91.121.11.199 \
    -port 27017 \
    +maxplayers 11 \
    -tickrate 125 \
    +map de_dust2 \
    -install \
    -autoupdate"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game cstrike -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "screen -dmS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    srcds_patch
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        srcds_stop
    ;;
    start)
        srcds_start
    ;;
    restart)
        srcds_restart
    ;;
    update)
        srcds_update
    ;;
    *)
        usage
esac

exit 0
Voila le message d'erreur:
-bash: /etc/init.d/serveur_css: /bin/sh^M: bad interpreter: Aucun fichier ou répertoire de ce type

Je ne trouve pas mon erreur.

Rom1
10/09/2007, 10h00
Je l'ai pas sous la main actuellement mais bon ...
http://www.google.fr/search?hl=fr&q=...e+Google&meta=

Julia41
07/09/2007, 17h30
Bah si tu voudrais filer ton script perl, je le prendrais bien, pas forcément un tuto... Mais bon Enfin remarque, je dois même pas savoir comment on créé un fichier en php

Rom1
07/09/2007, 16h44
Un tuto ... nan. J'ai fait un système perso à base de jeton pour réaliser des actions simples.

En (très) gros le site fait un hit sur une page web du serveur de jeu. Cette page va créer un fichier. Par exemple "reboot.txt".

Chaque minute (crontab) un script perl va vérifier l'existence de ces quelques fichiers. S'il les trouvent, il execute les commandes adéquates et supprime le fichier.


Alors gros avantage: c'est à peu près sur. Pas d'accès ssh, de pass dans le code source, de droit root à php ou je ne sais quoi. Même si quelqu'un pénètre les serveurs web, les actions autorisées sont limitées à celles définies.

Gros désavantage : c'est très limités et le temps de réaction est de 1min. Cela rempli donc parfaitement son rôle.

Dans mon cas cela ne sert qu'à forcer un reboot manuel des serveurs (jeu, teamspeak ...) et lancer manuellement un calcul des psychostats.

pam pam
07/09/2007, 00h44
voila juste un petit bonjour et pour signaler que ce tuto et vraiment tres tres bien 2 ou 3 petite modif pour css et impec merci a toi ROM1



==> au faite tu connais pas un tuto pour faire cela mais a partir du page du net un peu comme un pannel d admin mais pour le serveur

==> je c'est en faire une via putty pour le jeux sof2 mais pour css plus chaud

merci deja de ta reponse a + les gens

tutule
08/08/2007, 18h39
nan rien ;p

Rom1
07/06/2007, 16h28
Citation Envoyé par Julia41
Dans le script de symphyle, je crois que l'erreur venait peut-être de là :

Code:
# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Options de lancement
SRCDS_OPTS="-game cstrike \
Binaire du serveur, pour Counter-Strike 1.6, la binaire du serveur est ./hlds_run

Je viens de tester ce script à l'instant, modifié pour 1.6, il marche très très bien...
Il nous parlait de CSS et les options sont des paramètres Source (tickrate 66 notamment). Donc effectivement, s'il essaye de lancer du CS 1.6 avec ce script, c'est pas gagné !

Sinon, comme tu semble le confirmer, le script doit fonctionner moyennant des modifications mineures : nom de l'exécutable, paramètres ...

Julia41
07/06/2007, 16h02
Dans le script de symphyle, je crois que l'erreur venait peut-être de là :

Code:
# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Options de lancement
SRCDS_OPTS="-game cstrike \
Binaire du serveur, pour Counter-Strike 1.6, la binaire du serveur est ./hlds_run

Je viens de tester ce script à l'instant, modifié pour 1.6, il marche très très bien...

Onix
28/03/2007, 12h54
si tu es sous DEBIAN :

chmod 666 /dev/ptmx

et reboot la machine après

et normalement c'est bon ^^

symphyle
28/03/2007, 12h30
Ah non ! J'ai créé des utilisateurs tout simplement sans spécifier des droits particuliers ...

Comment fait on pour donner ces droits là aux users ?

Onix
28/03/2007, 10h37
as tu donné les droits aux users pour la commande screen ??

symphyle
27/03/2007, 23h21
Oui je pense avoir bien compris cela ... mais ma question persiste ... Le scipt ne lance pas le serveur sous le USER ... alors qu'en modifiant le script comme précédemment, le serveur se lance correctement.

Dans tous les cas, le script est utilisé et exécuté sous ROOT. En revanche c'est le serveur de jeu qui ne démarre pas !

Rom1
27/03/2007, 14h51
Il s'agit d'un script destiné à être lancé par root, par exemple au démarrage de la machine en le placant dans init.d.

En effet, root lance le screen en "se faisant passer" pour serveurffa via la commande su. Bref, pas vraiment une erreur mais plutôt une limitation dans le périmètre des fonctions de ce script.

symphyle
26/03/2007, 18h59
Merci pour ta réponse hyper rapide ^^

En cherchant un peu, je me rends compte que c'est le fait de demarrer le serveur avec un autre utilisateur que ROOT.

En effet, quand je modifie le script à l'endroit du lancement, j'exécute et le serveur se lance ...
srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd $SRCDS_PATH
screen -dmS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
donc l'erreur vient bien du user "serveurffa" qui est censé lancer le serveur sous root ....

Par contre je n'ai aucune idée de la source de cette erreur ...

Symphyle

Rom1
26/03/2007, 18h23
Le script se déroule bien mais le résultat n'est peut être pas bon.
Essaye de taper la ligne de commande habituellement exécutée par le screen. Le screen doit te masquer les erreurs ...

As-tu par exemple vérifié le paramètre SRCDS_OPTS ?

symphyle
26/03/2007, 18h17
Salut !

Le script devrait me faciliter la tache mais j'ai un souci ... pour une utilisation CSS.

J'ai modifié : nom d'utilisateur par le user qui est censé lancer le serveur, le nom du screen "serveurffa", le chemin du serveur où se trouve scrds_run "/home/serveurffa/", ainsi que les differentes options de lancement.

Seulement quand je lance le script : ./serveurffa.sh start, j'obtiens ça :

ns39743:/etc/init.d# ./serveurffa.sh start
---------------------------------------------------------------------
Lancement du serveur : Debut de la sequence
---------------------------------------------------------------------
---------------------------------------------------------------------
Lancement du serveur : Fin de la sequence
---------------------------------------------------------------------
Ces lignes apparaissent toutes en meme temps et le serveur ne se lance pas ! j'ai pourtant bien vérifier l'ip, etc ... mais je ne vois pas où est l'erreur. Si quelqu'un a une idée :s

Merci,

Symphyle

EDIT : Pour plus de clarté et une aide efficace voici la script que j'ai modifié ...
#############################################
## Début des variables ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="serveurffa"

# Nom du screen
SRCDS_NAME="serveurffa"

# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Repertoire du serveur
SRCDS_PATH="/home/serveurffa/"

# Options de lancement
SRCDS_OPTS="-game cstrike \
-console \
-tickrate 66 \
+maxplayers 24 \
+map de_dust2 \
-ip 87.98.190.111 \
-port 27015 \
+fps_max 600"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game cstrike -command update"


#############################################
## Fin des variables ##
#############################################
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
echo "---------------------------------------------------------------------"
exit 2
}

if [ -z $1 ]; then
usage
fi

srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_update() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
OWD=`pwd`
cd $SRCDS_PATH
su ${SRCDS_USER} -c "${STEAM_UPDATE}"
cd $OWD
srcds_patch
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

srcds_patch () {
echo "---------------------------------------------------------------------"
echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
echo "---------------------------------------------------------------------"
echo "Resultat :"
${SRCDS_PATH}dod/gameinfopatch.sh
echo "Copie du fichier motd.bak en motd.txt"
rm -f ${SRCDS_PATH}ctrike/motd.txt
cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}cstrike/motd.txt
echo "Attribution des droits"
chown ${SRCDS_USER} ${SRCDS_PATH}cstrike/motd.txt
chown ${SRCDS_USER} ${SRCDS_PATH}cstrike/gameinfo.txt
echo "---------------------------------------------------------------------"
echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
echo "---------------------------------------------------------------------"
}

case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
patch)
srcds_patch
;;
*)
usage
esac

exit 0

Rom1
21/03/2007, 21h41
Et avec des \ devant les " ? Dans ce genre :
STEAM_UPDATE="./steam -game \"Counter-Strike Source\" -command update"

Onix
21/03/2007, 12h47
malheureusement pour cs source ca ne fonctionne pas car voici ce que nous devons tapper :

STEAM_UPDATE="./steam -game Counter-Strike Source -command update"

l'espace n'est pas aimé dans la commande et si on mets :

STEAM_UPDATE="./steam -game "Counter-Strike Source" -command update"

et bien il dis que Source n'est pas une commande valide ^^

Rom1
13/03/2007, 17h23
Bonsoir à tous,

Je viens de corriger mon script afin d'améliorer la partie mise à jour qui se fait désormais via steam et non plus avec le paramètre autoupdate. C'est d'autant plus fiable (à mon gout) et permet de patcher pour metamod directement après sur un serveur arrêté.

Onix
01/03/2007, 18h14
c'est bon ca marche azprès re upload avec winscp3

Onix
01/03/2007, 17h54
nsxxxxx:/# /etc/init.d/war2.sh stop
: bad interpreter: Aucun fichier ou répertoire de ce type
nsxxxxx:/#

Onix
01/03/2007, 17h50
nsxxxxx:/# /etc/init.d/war2 stop
-bash: /etc/init.d/war2: Aucun fichier ou répertoire de ce type
nsxxxxx:/#

Onix
01/03/2007, 09h06
lol oui je sais mais le soir je joue en general ^^

Bon je mettrais celà ce soir ^^

Sufflope
28/02/2007, 18h02
Je crois que tu souffres d'une maladie grave
Tu devrais vite la soigner, car après ça tu constateras de bien meilleurs résultats dans tes demandes d'aide au support OVH ou sur n'importe quel forum.

Le médicament est très simple : un Ctrl+C sur l'erreur et un Ctrl+V dans la zone de réponse au sujet

Onix
28/02/2007, 09h41
le script est executable et le chemin est correct puisque avec mes scripts pas "propre" ca fonctionne parfaitement ^^

Le message d'erreur me parle de la fonction usage et d'une erreur sur les {

Bizarre quand même enfin bon avec mes fichiers war.sh et war_stop.sh je m'en sort très bien donc je ne vais pas chercher plus loin ^^

Rom1
27/02/2007, 09h04
Pour les problèmes liés aux users non root : ce script n'est pas prévu pour être lancé par quelqu'un d'autre que root. Simplement car il utilise un "su" pour passer dans un autre user, chose que seul root est autorisé à faire (enfin si on veux un truc sur ...).
Il est surement possible de l'adapter pour que un user ait la possibilité de relancer ses serveurs, je ne l'ai pas fait car cela ne me sert à rien et je privilégie la simplicité du script.

Pour le message d'erreur d'Onyx :
- soit ton script n'est pas executable.
- soit dans le script le chemin vers le repertoire contenant srcds n'est pas bon.

Sinon pour le lancement de serveur via une interface web je te conseille de rechercher un peu sur le forum Gameplan : différentes interface d'admin y ont été proposée. Sinon tu peux créer un nouveau sujet.

Sufflope
26/02/2007, 15h54
Quel est le message d'erreur exact ?

Onix
26/02/2007, 15h43
ouep ben ca change rien ^^

Sufflope
26/02/2007, 15h40
Ne pas oublier de le rendre exécutable : chmod u+x /etc/init.d/monscript

Onix
26/02/2007, 15h20
moi la commande :

/etc/init.d/serveurfun start me renvoie une erreur bash comme quoi le fichier ou repertoire serveurfun n'est pas pas valide ????

cejimagie
26/02/2007, 14h58
pour ma part je confirme qu'il marche impec , apres quelques modifs pour cssource et rajouter un fichier .sh pour le demarrag uto lors du reboot serveur.
Par contre j'ai essayer de changer d'utilisateur de groupe etc .;mais toujours le mots de passe demander quand je passe parquelq'un d'autre que le root ..

Ps personne ne peut me dire quel commande mettre sur une page html pour lancer ca par exemple . /etc/init.d/serveur32 start ??? merci

Onix
26/02/2007, 08h39
marche pas chez moi ^^

cejimagie
24/02/2007, 13h57
Bonjour et merci pour se script .
je l'ai adapter pour mon counter strike source
petite precision pour gentoo les commande pour le declarer sont :
chown -cvR kalamit /etc/init.d/nom_du_service
chmod +x /etc/init.d/nom_du_service

quand je me connecte en root ca marche impec
mais quand je me connecte sous l'utilisateur declarer dans le script ca marche pas ca me met :

---------------------------------------------------------------------
Usage: servgg (stop|start|restart|update|patch)
---------------------------------------------------------------------
et quand je change le chown -cvR mon_nom_dutilisateur /etc/init.d/servgg

---------------------------------------------------------------------
Arret du serveur : Debut de la sequence
---------------------------------------------------------------------
Password:

su*: Permission denied

---------------------------------------------------------------------
Arret du serveur : Fin de la sequence
---------------------------------------------------------------------

ca me demande un password ...et sa marcha pas.

quelqu'un peu t'il m'aider sur ce point.
par contre une question "je suis debutant" je lance toute ses commande sous putty en ssh, mais est t'il possible de les lancer via une page html que je creer sur mon serveur ? si oui pourriez vous m'aider merci

Onix
22/02/2007, 13h40
GG

Je l'ai repris pour moi je le testerais dès ce soir ^^

Rom1
22/02/2007, 13h14
Voici un script que j'ai réalisé (en repompant à droite à gauche) afin de lancer un serveur de jeu au démarrage de la machine, de l'arrêter proprement quand on stop la machine, de pouvoir lancer une update steam suivi d'un patch du gameinfo.txt (pour que metamod fonctionne toujours : voir ici).

Quelques remarques importantes :
  • Il s'agit d'un script à placer dans /etc/init.d/nom-du-script et à rendre exécutable bien sur Ensuite un coup de update.rc, rc-update ou autre et c'est parti. Si vous ne connaissez pas le principe de ce genre de script, je vous conseille cet article de LeaLinux.
  • Ce script lance le serveur dans un screen rattaché à user spécifique et évite donc de donner les droits root à votre serveur.
  • Le code est relativement spécifique à dods + metamod mais peut être facilement adapté à d'autres jeux (CS & co') avec ou sans metamod.


Code:
#!/bin/sh
#############################################
##     Script de lancement des serveur     ##
#############################################

#############################################
##          Début des variables            ##
#############################################

# Nom de l'utilisateur
SRCDS_USER="mon-user"

# Nom du screen
SRCDS_NAME="mon-screen"

# Binaire du serveur
SRCDS_BIN="./srcds_run"

# Repertoire du serveur
SRCDS_PATH="/home/mon-user/"

# Options de lancement
SRCDS_OPTS="-game dod \
    -console \
    -tickrate 70 \
    +maxplayers 32 \
    +map dod_donner \
    -ip 91.121.xxx.xxx \
    -port 27015 \
    +fps_max 600"

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -game dods -command update"

#############################################
##            Fin des variables            ##
#############################################
usage() {
    echo "---------------------------------------------------------------------"
    echo "Usage: ${SRCDS_NAME} (stop|start|restart|update|patch)"
    echo "---------------------------------------------------------------------"
    exit 2
}

if [ -z $1 ]; then
    usage
fi

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "screen -AmdS ${SRCDS_NAME} ${SRCDS_BIN} ${SRCDS_OPTS}"
    cd $OWD
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_stop() {
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    su ${SRCDS_USER} -c "screen -dr ${SRCDS_NAME} -X quit"
    echo "---------------------------------------------------------------------"
    echo "Arret du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_restart() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_update() {
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    srcds_stop
    OWD=`pwd`
    cd $SRCDS_PATH
    su ${SRCDS_USER} -c "${STEAM_UPDATE}"
    cd $OWD
    srcds_patch
    srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
}

srcds_patch () {
	echo "---------------------------------------------------------------------"
	echo "Lancement du patch pour Gameinfo.txt : Debut de la sequence"
	echo "---------------------------------------------------------------------"
	echo "Resultat :"
	${SRCDS_PATH}dod/gameinfopatch.sh
	echo "Copie du fichier motd.bak en motd.txt"
	rm -f ${SRCDS_PATH}dod/motd.txt
	cp ${SRCDS_PATH}dod/motd.bak ${SRCDS_PATH}dod/motd.txt
	echo "Attribution des droits"
	chown ${SRCDS_USER} ${SRCDS_PATH}dod/motd.txt
	chown ${SRCDS_USER} ${SRCDS_PATH}dod/gameinfo.txt
	echo "---------------------------------------------------------------------"
	echo "Fin du patch pour Gameinfo.txt : Fin de la sequence"
	echo "---------------------------------------------------------------------"
}

case $1 in
    stop)
        srcds_stop
    ;;
    start)
        srcds_start
    ;;
    restart)
        srcds_restart
    ;;
    update)
        srcds_update
    ;;
    patch)
        srcds_patch
    ;;  
    *)
        usage
esac

exit 0
Quelques exemples d'utilisations :
- Lancer les serveurs de jeu a chaque redémarrage de la machine
- Arrêter proprement les serveurs lorsqu'on reboot la machine (et donc sauvegarder correctement les stats et logs du jeu).
- Pouvoir rebooter simplement le serveur en faisant un simple "/etc/init.d/monscript restart", et pourquoi placer cette commande dans crontab
- Pouvoir mettre à jour simplement le serveur en faisant un simple "/etc/init.d/monscript update", et pourquoi placer cette commande dans crontab

En espérant que cela répondra aux nombreuses questions concernant le démarrage automatique ou le reboot journalier des serveurs de jeu.