Problème script sh. [RÉSOLU]

Bonjour tout le monde!
Je me présente Shinou, 19 ans commence tout juste sur linux, et encore, je suis sous vista mais j’ai un serveur dédié sous linux Debian.

Donc voila je vous expose mon problème:

Comme dis précédemment, le serveur dédié en question est de chez OVH et tourne sous Linux Debian,
celui ci est utilisé à des fin de divertissement, c’est à dire à la création de serveurs counter strike pour une Team.
Et donc le problème que je rencontre en ce moment est l’éxecution d’un script…

Après avoir éxposé mon problème sur leur forum, toutes les solutions qu’ils m’ont proposé n’ont pas étées fructueuse, pour ça que je pose la question ici, en éspérant que vous parviendrez a trouver la solution u_u.

Donc pour commencer voici le script que j’essai de faire fonctionner

[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[/code]

Et voici ce que me répond la console

[quote]: 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() {[/quote]

A savoir que le but de se script est qu’il se lance automatiquement lors d’un reboot de la machine ou que si l’un des serveurs crash, il puisse se relancer automatiquement sans que je n’ai a rentrer la commande directement.

Voila voici mon problème j’espère que vous trouverez la solution, et vous remerci de l’aide que vous m’apporterez. :slightly_smiling:

Salut Shinou

Le script que tu as posté est correct.
Si /bin/sh existe bien, ce que j’imagine, c’est que tu as un problème avec les fins de lignes.

As tu transféré ton script à un moment sur un autre système d’exploitation que gnu/linux ?
Si tu l’as édité sous windows avec notepad, toutes les fins de lignes ont été converties.
Si tu as utilisé ftp, il faut savoir que ce protocole est intelligent et va transformer les fins de lignes vers le système destinataire. Et c’est le seul mode de transfert qui effectue cette opération, utile, ou pas.
Si ensuite tu le recopie en utilisant quelque chose d’autre que le ftp, ce n’est pas bon.

Donc pour commencer je te remercie de m’avoir répondu,
pour ce qui est de la rédaction du script, oui je l’ai fais sous vista,
et je l’ai transférer via le ftp filezila et je ne sais pas si lui fais la conversion.

Donc pour régler le problème comment faudrait que je faisse? le taper entièrement via la console?

Si perl est installé (tappe perl -V),
tu peux utiliser cette commande:

perl -i -pe ‘s/\r//g’ fichier

DOS a un caractère de trop par rapport à Unix (\r)

Bonjour,

Si le transfert a été fait en ascii avec Filezilla, la conversion du fichier a été effectué.

et comment je sais que c’est en acsi?

Sur le serveur, ouvre le fichier avec vi
Si c’est ecrit [dos] en bas, ben…

Je te remercie ignatioza, grâce à ce que tu m’a dit d’utiliser perl, bah je peux maintenant lancer mon script,
par contre il me donne maintenant d’autre erreurs

[quote]/etc/init.d# sh ./serveurs.sh start

Lancement du serveur : Debut de la sequence

bash: line 1: -game: command not found
bash: line 1: -game: command not found
bash: line 1: -game: command not found

Lancement du serveur : Fin de la sequence

[/quote]
Car lorsque je fais un screen -r voir si il se sont lancer
bah il y a la liste des trois serveurs mais ils sont down.

Si je fais un copy paste de ton script, a partir d’une debian, et que je l’execute, je vais beaucoup plus loin…

(pas besoin du sh devant):

./u start

Lancement du serveur : Debut de la sequence

Mot de passe :
su : Échec d’authentification
Mot de passe :
su : Échec d’authentification
Mot de passe :

Il faut que tu vires vista… je vois pas d’autres solution
:smiley:

Lol ok, m’en doutais que ça devait venir d’un truc dans le genre xD.

Bah je te remercie quand même de l’aide que tu m’a apporté ^^.

Je met le sujet en résolue étant donné que maintenant c’est tout autre chose!
Encore merci ^^.

Lol nouveau rebondissement, je viens de faire ce que tu m’a dit j’ai copy/paste le script.sh
depuis non pas debian mais depuis ubuntu, et j’ai le même message d’erreur…

Donc en fait je ne pense pas que se soit résolu :confused:

Ah et deuxième chose, lorsque j’essaie de lancer le script via ubuntu, le terminal me dit que
Can’t open serveurs.sh

Donc avis à ceux qui peuvent m’aider je suis toute ouïe

Je precise que j’ai fait un copy paste a partir… du message initial, ici.
Ensuite j’ai fermé le fichier, et j’ai rendu le script executable:
chmod +x serveurs.sh
Toi aussi? Ou c’est un copy paste d’un copy paste d’un copy paste? :slightly_smiling:

Re, donc pour m’assurer que je n’avais pas fais ce que tu avais dis (copy/paste d’un copy/paste,etc…)
j’ai directement pris ici le script que j’ai noté, et l’ai collé à un nouveau serveurs.sh (bien sur tout cela fait via ubuntu)
je l’ai donc transféré via le ftp de ubuntu, ai rendu le script exécutable pour tomber sur le même problème…

Hummm pas normal.

Et tu lui a mis un petit de coup de perl pour enlever tout caractére malefique?

perl -i -pe ‘s/\r//g’ fichier

A faire sur le serveur biensur.

Ou sinon, on est pas sur la bonne piste.

: Command not found ou can’t open serveur.sh ?

j’ai fais le “petit” coup de perl, mais aucun changement :confused:
Si tu veux les screens des serveurs se lancent, car en faisant “screen -r” j’ai mes trois serveurs d’affiché, pourtant ils sont time out.

Pourtant j’ai un autre script qui lui fonctionne à merveille meme avec la ligne “-game”

[code] #!/bin/sh
#Lancement du serveur ffa
su root -c ‘cd /home/serveurcs/serveurffa; screen -dmS serveurffa ./hlds_run -game czero +maxplayers 24 +map de_dust2_cz +port 27015 -tickrate 1000 -autoupdate’

#!/bin/sh
#Lancement du serveur war
su root -c ‘cd /home/serveurcs/serveurwar; screen -dmS serveurwar ./hlds_run -game czero +maxplayers 12 +map de_dust2_cz +port 27016 -tickrate 1000 -autoupdate’

#!/bin/sh
#Lancement du serveur dem
su root -c ‘cd /home/serveurcs/serveurde; screen -dmS serveurdem ./hlds_run -game czero +maxplayers 24 +map de_dust2_cz +port 27017 -tickrate 1000 -autoupdate’[/code]

Bonjour,

Le probleme doit venir de ces trois parties :

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"

essai comme ceci :

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"

Pareil pour HLDS_OPTS_SERV_2 et HLDS_OPTS_SERV_3, il faut supprimer le premier retour chariot apres le =

Ok je test ça et je te dis ^^

Edit: je viens de tester et c’est de la que venais le problème!
Merci donc a Micky et a Ignatioza pour votre aide ^^.