J'ai codé un script pour lancer automatique psybncau démarage de mon serveur mais il ne fonctionne pas
J'obtient l'érreur suivante : Syntax error ; bad fd number
#!/bin/sh
PATH=/usr/local/bin
NAME=PsyBNC
case $1 in
start)
echo -n "Starting $NAME"
psybnc /usr/local/etc/psybncd >& /dev/null
;;
stop)
echo -n "Stopping $NAME"
killall -9 psybnc >& /dev/null
;;
restart)
echo -n "Restarting $NAME"
killall -9 psybnc >& /dev/null
psybnc $CONF >& /dev/null
;;
*)
echo -n "Usage : /etc/rc.d/psybncd {START|STOP|RESTART}"
exit 1
;;
esac
exit 0
L'érreur serait située au à la ligne contenant "esac" ...
Merci
# psybnc /usr/local/etc/psybncd >& /dev/null
Posté par totof2000 . Évalué à 5.
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par skeespin (site web personnel) . Évalué à 4.
d'ailleurs tu pourrais :
PATH="/usr/local/bin"
NAME="PsyBNC"
et
echo -n "Usage : /etc/rc.d/psybncd {start|stop|restart}"
Ca mange pas de pain et le code est bcp plus clair !
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par thechief . Évalué à 2.
Concernant la réponse de skeespin, je présume que le mot après "tu pourrais" est "supprimer" :), Pourquoi veux-tu que je supprime echo -n "Usage : /etc/rc.d/psybncd {start|stop|restart}" ?
merci
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par skeespin (site web personnel) . Évalué à 3.
il vaut mieux d'experience utiliser les doubles cotes
quand tu affectes des chaines de caracteres a des variables.
Deplus dans ton aide les arguments passés au script sont en majuscules alors que dans ton "case" tu utilises des minuscules ("START" != "start")
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par totof2000 . Évalué à 3.
> &n permet de rediriger la sortie standard vers le descripteur de fichier n (1 correspondant a la sortie standard, 2 a la sortie d'erreur).
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par adibou . Évalué à 2.
donc je dirais que son pb ne vient pas du script en lui mm (en remplacant psybnc par echo ca marche tres bien chez moi), mais de la variable $CONF qui n'est pas init... (d'ailleurs ca serait mieux de l'utiliser aussi dans le start, et pas seulement le restart)
apres je ne sais pas comment fonctionne psybnc si on ne lui file pas d'argument... mais je dirais qu'il sort en erreur, et le shell le dit tout tranquillement...
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par totof2000 . Évalué à 2.
T'es sur que ca marche en sh ce truc, et que c'est pas du specific bash?
essaye en sh (j'ai pas de bash pour tester ici). Mais sous ksh (AIX) :
$ echo "coucou" >& /dev/null
ksh: /dev/null: bad file unit number
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par adibou . Évalué à 2.
$ echo "coucou" 2>&1 >/dev/null
$
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par adibou . Évalué à 1.
$ echo "coucou" >/dev/null 2>&1
$
dans le cas ou on utilise un programme qui emet sur stderr aussi :)
dsl pour le bruit precedent...
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par tgl . Évalué à 3.
>
> T'es sur que ca marche en sh ce truc, et que c'est pas du specific bash?
Il pense en fait à "&>" je pense. "cmd &>/dev/null", c'est un raccourcis pour "cmd >/dev/null 2>&1", enfin bref "&>" est une redirection des deux sorties à la fois.
Ça existe au moins en Bash, mais je ne sais pas si c'est du pur Bourne shell ou pas.
[^] # Re: psybnc /usr/local/etc/psybncd >& /dev/null
Posté par thechief . Évalué à 1.
merci
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.