OVH Community, votre nouvel espace communautaire.

[HOW-TO] script de lancement serveur de jeux (l4d, dods, css, etc..) adapté


Ramboforever
24/11/2010, 00h25
Citation Envoyé par Ramboforever
Script testé et approuvé sur Dods, CSS, L4D2, TF2 !!!
Un grand merci à SwissDadou et à ROM1 qui a était la base de ton travail !!!
GG et merci encore à la communauté OVH et des gamers !!!
Bon jeux à tous !!!
Bonsoir,

en fait je viens de m'apercevoir que l'update pour CSS ne fonctionne pas pour la simple et bonne raison qu'il y a des guillemets dans la ligne de commande de l'update sur ce jeux que je n'arrive pas à intégrer au script...

je m'explique voici une ligne de commande typique pour dods:

./steam -command update -game dods -dir .

et voici la ligne de commande typique pour css:

./steam -command update -game "Counter-Strike Source" -dir css

donc je voudrais savoir comment pouvons nous intégrer les guillemets dans notre script ???
après des dizaines d'essais toujours sans succès de mon côté !!!
Merci pour vos réponses...
Cordialement

Ramboforever
14/11/2010, 20h26
Script testé et approuvé sur Dods, CSS, L4D2, TF2 !!!
Un grand merci à SwissDadou et à ROM1 qui a était la base de ton travail !!!
GG et merci encore à la communauté OVH et des gamers !!!
Bon jeux à tous !!!

Timo92
30/03/2009, 19h43
Code:
#!/bin/sh
#############################################
## Script de lancement des serveurs        ##
## Update par SwissDadou, Feb 2009         ##
#############################################

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

# Paramètres serveur Linux
USER_NAME=${PATH_INSTALL}					# Nom de l'utilisateur linux
SCREEN_NAME="l4d-serv3"				# Nom du screen
SRCDS_BIN="./srcds_run"					# Binaire du serveur

# Répertoires
PATH_INSTALL="/home/left4dead/server3/l4d/"		# Répertoire d'installation
PATH_BIN=${PATH_INSTALL}				# Répertoire du binaire
PATH_GAME=${PATH_BIN}"/left4dead/"			# Répertoire du jeu
PATH_CONF=${PATH_GAME}			# Répertoire pour les logs et config du jeu

# Paramètres serveur Jeux
GAME_NAME="l4d"						# Nom de lancement du jeu
GAME_INSTALLNAME="left4dead"					# Nom d'installation du jeu
GAME_TICK="100"						# Tickrate du serveur
GAME_PLAYERS="8"					# Nombre de joueurs max
GAME_MAP="l4d_vs_hospital01_apartment"			# Map de lancement
GAME_IP="94.23.47.216"					# IP du serveur
GAME_PORT="28100"					# Port de lancement
GAME_FPS="1000"						# FPS du serveur

#############################################
## Paramètre divers   (ne rien éditer)     ##
#############################################

# Options de lancement
SRCDS_OPTS="-game $GAME_NAME \
		-console \
		-tickrate $GAME_TICK \
		+maxplayers $GAME_PLAYERS \
		+map $GAME_MAP \
		-ip $GAME_IP \
		+tv_port $GAME_TVPORT \
		-port $GAME_PORT \
		+fps_max $GAME_FPS \
		-autoupdate "

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -command update -game $GAME_INSTALLNAME -dir $PATH_INSTALL"

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $PATH_BIN
    echo "Commande de lanceement: [su $USER_NAME -c "screen -AmdS $SCREEN_NAME $SRCDS_BIN $SRCDS_OPTS"]"
    su $USER_NAME -c "screen -AmdS $SCREEN_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 "---------------------------------------------------------------------"
    echo "su ${USER_NAME} -c "screen -dr $SCREEN_NAME -X quit""
    su ${USER_NAME} -c "screen -dr $SCREEN_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
    
    echo "Debut de l'update le `date`" >> ${PATH_CONF}/log.txt 
	
	# Sauvegarde des paramètres
	cp -f ${PATH_GAME}/maplist.txt ${PATH_CONF}/maplist.bak
	cp -f ${PATH_GAME}/gameinfo.txt ${PATH_CONF}/gameinfo.bak
	cp -f ${PATH_GAME}/motd.txt ${PATH_CONF}/motd.bak
	#cp -f ${PATH_GAME}/host.txt ${PATH_CONF}/host.bak
	
	# Mise à jour
    echo "Commande: [su ${USER_NAME} -c "${STEAM_UPDATE}"]"
    OWD=`pwd`
    
	cd $PATH_INSTALL
    su ${USER_NAME} -c "${STEAM_UPDATE}"
    cd $OWD
	
	# Restauration des paramètres
	cp -f ${PATH_CONF}/maplist.bak ${PATH_GAME}/maplist.txt
	cp -f ${PATH_CONF}/gameinfo.bak ${PATH_GAME}gameinfo.txt
	cp -f ${PATH_CONF}/motd.bak ${PATH_GAME}/motd.txt
	#cp -f ${PATH_CONF}/host.bak ${PATH_GAME}/host.txt
	
	# Mise en place des propriétaires
	chown -R $USER_NAME:$USER_NAME $PATH_INSTALL
    
    echo "Fin de l'update le `date`" >> ${PATH_CONF}/log.txt
	
	srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
    
    echo "Serveur démarré le `date`" >> ${PATH_CONF}/log.txt
}


if [ -z $1 ]; then
    usage
fi

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

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

exit 0
voici mon script.
ce que je voudrai c'est utiliser la commande reboot (ou restart) avec hlsw.
je n'ai pas compris ce que je dois faire si mon script n'est pas dans le root car effectivement il me demande un mot de passe quand je veux reboot avec "./monscript.sh restart" quand je suis dans home/servers/left4dead/server3/l4d/

Timo92
28/03/2009, 20h28
Bonjour,

J'ai besoin de votre aide pour créer un script comme tu viens de faire.
Le truc c'est qui j'y connais absolument rien ('^_^)
Par exemple: pour USER_NAME je ne sais pas quoi mettre.

Je possède un serveur l4d et il arrive qu'il plante alors je suis obligé d'aller killer une pid dans le shell.
Je n'ai pas tous les droits mais c'est moi qui me suis occupé de la configuration des serveurs (cfg, plugins et autres broutilles...)
Voici comment se présente mon ftp:


Merci d'avance

Alpha_67
13/03/2009, 04h46
bash: ./cssgame.sh: /bin/sh^M: bad interpreter: Aucun fichier ou répertoire de c
e type
en root :
echo "O" | apt-get install tofrodos

cd /juqua\ton\fichier.sh

dos2unix ton_fichier.sh

metatrone
10/03/2009, 11h33
Désoler de remonter le post mes j ai un probleme

voila j ai un serveur dédier chez hosteur avec dessu debian/gnu sans interface graphique

donc je cree le script cssgame.sh je modifie les ligne (je ne suis pas sur qu elle son corect)

Paramètres serveur Linux
USER_NAME="pymous" # Nom de l'utilisateur linux
SCREEN_NAME="cssgame" # Nom du screen
SRCDS_BIN="./srcds_run" # Binaire du serveur

# Répertoires
PATH_INSTALL="/srv/srcds/ffa_1/css" # Répertoire d'installation
PATH_BIN=${PATH_INSTALL}"/bin" # Répertoire du binaire
PATH_GAME=${PATH_BIN}"/srv/srcds/ffa_4/css" # Répertoire du jeu
PATH_CONF="/home/..." # Répertoire pour les logs et config du jeu
ces pour css j ai 5 serveur
1 /srv/srcds/ffa_1/css
2 /srv/srcds/ffa_2/css etc etc
je mes le fichier sh dans le dossier /etc/init.d/
je tape dans la console cd /etc/init.d/
chmod +x cssgame.sh
ensuite ./cssgame.sh start et voici l erreur qu il me donne
bash: ./cssgame.sh: /bin/sh^M: bad interpreter: Aucun fichier ou répertoire de c
e type
voila si quelqu un pouvais m aider merci d avance (j ai aussi accet sftp) pas a l interface graphique car je n arrive pas a metre le nxserv dessu

et les dernier ligne changer
# Paramètres serveur Jeux
GAME_NAME="css" # Nom de lancement du jeu
GAME_INSTALLNAME="css" # Nom d'installation du jeu
GAME_TICK="100" # Tickrate du serveur
GAME_PLAYERS="20" # Nombre de joueurs max
GAME_MAP="de_dust2" # Map de lancement
GAME_IP="217.16.1.16" # IP du serveur
GAME_PORT="27018" # Port de lancement
GAME_TVPORT="27025" # Port de lancement TV
GAME_FPS="1000" # FPS du serveur

neospeed2
19/02/2009, 18h12
Voila un script que j'ai fait :

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

ToUsMiC
18/02/2009, 17h01
Est il possible de lancer un fichier *.sh a partir d'un fichier php ? (genre : Start / Stop / Reboot ) ?

SwissDadou
18/02/2009, 15h36
Bonjour

L'orginie de ce script provient de Rom1.
voir http://forum.ovh.com/showthread.php?...=script+screen

Je l'ai un peu adapté depuis la sortie de la Orangebox, L4D, etc.. soit un remaniement des répertoires.

Je ne vais pas détailler son fonctionnement de base car cela est déjà bien expliqué dans le poste à Rom1.

Ce script demande 4 arguments: stop|start|restart|update

Code:
./monscript.sh start
start:
Lance le serveur de jeu dans un screen linux avec un ulilisateur et un nom définis.

stop:
Arrête le serveur de jeux et ferme le screen

restart:
stop et start

update:
stop le serveur
copie les fichiers maplist.txt, gameinfo.txt et motd.txt dans un répertoire défini. Car lors d'une mise à jour steam, ces fichiers sont réinitialisés.
lance la commande d'update de steam
remet les fichiers précédemments copie à leur place d'origine
start le serveur
créé un petit fichier log.txt pour le fun..

Remarques:
Si vous lancez ce script avec un utilisateur autre que root, un mot de passe sera demandé. Ce mot de passe est celui de l'utilisateur linux que vous avez défini dans le script. Ce mot de passe provient de l'action
Code:
su USER -C "commande"
Mais si votre script est mit dans /etc/init.d et passé dans
Code:
update-rc.d monscript.sh defaults 99
ce sera root qui va le lancer. Cette dernière commande ajoute à Linux le script au démarrage du serveur avec une priorité de 99 (la plus haute), c'est 20 par défault je crois...

Code:
#!/bin/sh
#############################################
## Script de lancement des serveurs        ##
## Update par SwissDadou, Feb 2009         ##
#############################################

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

# Paramètres serveur Linux
USER_NAME="linux-user"					# Nom de l'utilisateur linux
SCREEN_NAME="nom-du-screen"				# Nom du screen
SRCDS_BIN="./srcds_run"					# Binaire du serveur

# Répertoires
PATH_INSTALL="/home/..."				# Répertoire d'installation
PATH_BIN=${PATH_INSTALL}"/orangebox"	# Répertoire du binaire
PATH_GAME=${PATH_BIN}"/dod"				# Répertoire du jeu
PATH_CONF="/home/..."					# Répertoire pour les logs et config du jeu

# Paramètres serveur Jeux
GAME_NAME="dod"							# Nom de lancement du jeu
GAME_INSTALLNAME="dods"					# Nom d'installation du jeu
GAME_TICK="100"							# Tickrate du serveur
GAME_PLAYERS="20"						# Nombre de joueurs max
GAME_MAP="dod_flash"					# Map de lancement
GAME_IP="xx.xx.xx.xx"					# IP du serveur
GAME_PORT="27015"						# Port de lancement
GAME_TVPORT="27025"						# Port de lancement TV
GAME_FPS="1000"							# FPS du serveur

#############################################
## Paramètre divers   (ne rien éditer)     ##
#############################################

# Options de lancement
SRCDS_OPTS="-game $GAME_NAME \
		-console \
		-tickrate $GAME_TICK \
		+maxplayers $GAME_PLAYERS \
		+map $GAME_MAP \
		-ip $GAME_IP \
		+tv_port $GAME_TVPORT \
		-port $GAME_PORT \
		+fps_max $GAME_FPS \
		-autoupdate "

# Ligne de commande pour l'update
STEAM_UPDATE="./steam -command update -game $GAME_INSTALLNAME -dir $PATH_INSTALL"

srcds_start() {
    echo "---------------------------------------------------------------------"
    echo "Lancement du serveur : Debut de la sequence"
    echo "---------------------------------------------------------------------"
    OWD=`pwd`
    cd $PATH_BIN
    echo "Commande de lanceement: [su $USER_NAME -c "screen -AmdS $SCREEN_NAME $SRCDS_BIN $SRCDS_OPTS"]"
    su $USER_NAME -c "screen -AmdS $SCREEN_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 "---------------------------------------------------------------------"
    echo "su ${USER_NAME} -c "screen -dr $SCREEN_NAME -X quit""
    su ${USER_NAME} -c "screen -dr $SCREEN_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
    
    echo "Debut de l'update le `date`" >> ${PATH_CONF}/log.txt 
	
	# Sauvegarde des paramètres
	cp -f ${PATH_GAME}/maplist.txt ${PATH_CONF}/maplist.bak
	cp -f ${PATH_GAME}/gameinfo.txt ${PATH_CONF}/gameinfo.bak
	cp -f ${PATH_GAME}/motd.txt ${PATH_CONF}/motd.bak
	#cp -f ${PATH_GAME}/host.txt ${PATH_CONF}/host.bak
	
	# Mise à jour
    echo "Commande: [su ${USER_NAME} -c "${STEAM_UPDATE}"]"
    OWD=`pwd`
    
	cd $PATH_INSTALL
    su ${USER_NAME} -c "${STEAM_UPDATE}"
    cd $OWD
	
	# Restauration des paramètres
	cp -f ${PATH_CONF}/maplist.bak ${PATH_GAME}/maplist.txt
	cp -f ${PATH_CONF}/gameinfo.bak ${PATH_GAME}gameinfo.txt
	cp -f ${PATH_CONF}/motd.bak ${PATH_GAME}/motd.txt
	#cp -f ${PATH_CONF}/host.bak ${PATH_GAME}/host.txt
	
	# Mise en place des propriétaires
	chown -R $USER_NAME:$USER_NAME $PATH_INSTALL
    
    echo "Fin de l'update le `date`" >> ${PATH_CONF}/log.txt
	
	srcds_start
    echo "---------------------------------------------------------------------"
    echo "Reboot du serveur avec mise a jour : Fin de la sequence"
    echo "---------------------------------------------------------------------"
    
    echo "Serveur démarré le `date`" >> ${PATH_CONF}/log.txt
}


if [ -z $1 ]; then
    usage
fi

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

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

exit 0