Sleep: intervalle de temps non valide script.sh

Bonjour à tous,

Mon problème est le suivant:
Je suis en train de me créer un panel de gestion pour serveur minecraft en php gràce à libssh2 et ssh2 pour debian squeeze 64 bits. J’ai presque fini mais un problème m’empêche d’avancer.

En effet, afin de gèrer le start/stop/reboot des serveurs, je me suis créer des script.sh que j’exécute à l’aide de la fonction ssh2_exec. Afin de les placer dans le répertoire “/home/minecraft/base/” d’où ils seront exécuté j’envoie les commandes suivantes avec ssh2_exec:

mkdir /home/minecraft/
mkdir /home/minecraft/base/
cp /var/www/games/Minecraft/minecraft_server.jar /home/minecraft/base/
cp /var/www/games/Minecraft/craftbukkit.jar /home/minecraft/base/	
cp /var/www/games/Minecraft/sh/* /home/minecraft/base/

chmod 775 /home/minecraft/base	
chmod 775 /home/minecraft/base/MinecraftStart.sh
chmod 775 /home/minecraft/base/MinecraftStop.sh
chmod 775 /home/minecraft/base/MinecraftReboot.sh
chmod 775 /home/minecraft/base/CraftbukkitStart.sh
chmod 775 /home/minecraft/base/CraftbukkitReboot.sh

Je démare ensuite le serveur avec ssh2_exec(“sh /home/minecraft/base/MinecraftStart.sh 25565”); // 25565 étant le port du serveur à lancer.

MinecraftStart.sh:

#!/bin/sh
cd /home/minecraft/$1/minecraft/
sleep 1
screen -dmS Minecraft_$1 java -Xms2048M -Xmx2048M -jar /home/minecraft/base/minecraft_server.jar nogui
sleep 1
screen -ls
echo "\033[1;32mServer Minecraft_$1 on.\033[0m"

Le serveur ce lance correctement, puis lorsque je suis sur le serveur. Pour le couper j’utilise ssh2_exec(“sh /home/minecraft/base/MinecraftStop.sh 25565”);

MinecraftStop.sh:

#!/bin/sh
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down in: 5 seconds'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down in: 4 seconds'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down in: 3 seconds'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down in: 2 seconds'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down in: 1 seconds'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'say The server will be shut down.'^m"
sleep 1
screen -S Minecraft_$1 -X -p0 eval "stuff 'stop'^m"
sleep 1
screen -S Minecraft_$1 -X quit
screen -ls
echo "\033[1;31mServer Minecraft_$1 off.\033[0m"

Le serveur est bien arreter mais les avertissement sont tous envoyer d’un coup sans prendre en compte le sleep 1.

J’ai donc exécuté MinecraftStop.sh depuis mon vps directement et ce message est apparut dans putty:

/home/minecraft/base# sh MinecraftStop.sh

sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
sleep: intervalle de temps non valide « 1\r »
Saisissez « sleep --help » pour plus d'informations.
There is a screen on:
        3768.Minecraft_25566 (21/02/12 17:33:28)     (Detached)
1 Socket in /var/run/screen/S-root.

Server Minecraft_25565 off.

Sachant que les script fonctionnaient correctement quand je les avaient écrit directement avec editor sur le dédié,
j’ai décidé de tester en copian le contenu de MinecraftStop.sh et en le collant dans: editor test.sh puis exécuté test.sh et la le script refonctionne correctement sleep est bien pris en compte lorsque je suis sur le serveur.

Je ne comprend donc pas d’où peut bien venir ce problème assez gênant et c’est pour cela que je vient solicité votre aide.
Merci d’avance, n’hésitez pas à me poser d’autres questions.

EDIT: je précise que la connexion est effectuée en root pour ces test.

Quand tu édites un fichier sous Windows pour l’utiliser sur un système Linux, il faut utiliser un éditeur qui soit capable de générer des fins de ligne Linux/Unix (\n) et non pas Windows (\r\n).
Pour convertir un tel fichier après coup : dos2unix.

Maintenant que tu me dit ca c’est bien possible, je n’est pas l’habitude de modifier les fichiers sous windows en effet, d’habitude je les écrit directement dans la console. Je test et je vient dire quoi.
Merci encore.

Ca fonctionne correctement avec Dos2Unix.exe
merci beaucoup syam.