Mon premier script bash: (c correcte ou) c tout a revoir(? [ver 0.002]

Mon premier script bash: (c correcte ou) c tout a revoir(? [ver 0.002] - Multimédia - Linux et OS Alternatifs

Marsh Posté le 19-09-2002 à 20:56:08    

Code :
  1. #!/bin/sh
  2. #Variables
  3. NAME="pure-ftpd"
  4. PATH="/usr/local/sbin/pure-ftpd"
  5. OPTION=" -E -j -lpuredb:/etc/pureftpd.pdb"
  6. PID="/var/run/pure-ftpd.pid"
  7. case "$1" in
  8.     start)
  9.         if [ -e $PID ];
  10.         then
  11.             echo "Pure-FTPd already running"
  12.         elif [ -e $PATH ];
  13.         then
  14.             echo "Lancement de Pure-FTPd"
  15.             $PATH $OPTION &
  16.         else
  17.             echo "Pure-FTPd n'a pas été trouvé"
  18.         fi
  19.     ;;
  20.     stop)
  21.         if [ -e $PID ];
  22.         then
  23.             echo "Arret de pure-FTPd"
  24.             /usr/bin/killall $NAME
  25.         else
  26.             echo "Pure-FTPd already down"
  27.         fi
  28.     ;;
  29.     restart)
  30.         $0 start
  31.         $0 stop
  32.     ;;
  33.     *)
  34.         echo "{start|stop|restart}"
  35.         exit 1
  36. esac
  37. exit 0


 
il fonctionne bien mais je c pas si il est ecrit correctement...


Message édité par leirn le 23-09-2002 à 22:50:35

---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 19-09-2002 à 20:56:08   

Reply

Marsh Posté le 21-09-2002 à 20:40:57    

Oui il est écris correctement MAIS :
 
-J'utiliserais le contenu du fichier pid, pour faire une seconde vérification sur la présence du processus.
-Quand tu fais un stop : tu n'es pas obligé de vérifier si le processus tourne.
 
 
J'ajouterais en fonction du fichier pid et de sa présence, un  
status) ou une fonction status()  qui retourne une valeur

Reply

Marsh Posté le 21-09-2002 à 21:02:53    

joli et propre ce script !  
 
pour le exit , retourne plutot le statut d'une execution dans un des choix .  
 
exemple declarer une globale STATUT , puis lui affecter une valeur dans les choix  , comme dans "pureftpd pas trouvé" : STATUT=1    et en fin de script tu retournes un exit $STATUT ( tu dois dans ce cas là affecter aussi une valeur en cas de succes ou alors affecter 0 d'office dans la déclaration de la variable)

Reply

Marsh Posté le 22-09-2002 à 00:12:30    

Ca ne répond sans doute pas à ta question, mais peut-être à tes préoccupations:
http://sourceforge.net/projects/pftpd-sh/

Reply

Marsh Posté le 22-09-2002 à 19:13:03    

becket a écrit a écrit :

Oui il est écris correctement MAIS :
 
-J'utiliserais le contenu du fichier pid, pour faire une seconde vérification sur la présence du processus.
-Quand tu fais un stop : tu n'es pas obligé de vérifier si le processus tourne.
 
 
J'ajouterais en fonction du fichier pid et de sa présence, un  
status) ou une fonction status()  qui retourne une valeur




 
g pas trouvé comment faire ca... ya une fonction ki le fait ou fo ke je fasse autrement par un moyen detourné kkonk?
 
qd a mes preoccupations, faire un script moi meme, c tout :)


Message édité par leirn le 22-09-2002 à 19:13:40

---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 22-09-2002 à 20:50:18    

Juste un détail:
je doute fort que le "restart" fonctionne correctement avec ton script :D

Reply

Marsh Posté le 22-09-2002 à 21:11:39    

[Albator] a écrit a écrit :

Juste un détail:
je doute fort que le "restart" fonctionne correctement avec ton script :D




je m'en suis appercu apres le post, il a deja ete corrigé :D


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 22-09-2002 à 21:16:24    

Voici ma nouvelle version du script, a vous de jouer!
 

Code :
  1. #!/bin/sh
  2. #
  3. # Fichier de lancement/arret de pure ftpd version 0.001
  4. # ecrit par Leirn
  5. #
  6. #
  7. # Liste des statuts:
  8. # 0: arret normal
  9. # 1: fichier introuvable
  10. # 2: serveur deja lancé
  11. # 3: argument incompris
  12. # 4: status
  13. #
  14. #Variables
  15. NAME="pure-ftpd"
  16. PUREPATH="/usr/local/sbin/pure-ftpd"
  17. OPTION=" -E -j -lpuredb:/etc/pureftpd.pdb"
  18. PID="/var/run/pure-ftpd.pid"
  19. STATUT=0
  20. case "$1" in
  21.         start)
  22.                 if [ -e $PID ];
  23.                 then
  24.                         if [ -d /proc/$(<$PID) ];
  25.                         then
  26.                                 echo "Pure-FTPd already running"
  27.                                 STATUT=2
  28.                         fi
  29.                 elif [ -x $PUREPATH ];
  30.                 then
  31.                         echo "Lancement de Pure-FTPd"
  32.                         $PUREPATH $OPTION &
  33.                 else
  34.                         echo "Pure-FTPd n'a pas été trouvé"
  35.                         STATUT=1
  36.                 fi
  37.         ;;
  38.         stop)
  39.                 echo "Arret de pure-FTPd"
  40.                 /usr/bin/killall $NAME
  41.         ;;
  42.         restart)
  43.                 $0 stop
  44.                 $0 start
  45.         ;;
  46.         status)
  47.                 if [ -e $PID ];
  48.                 then
  49.                         echo "Server running
  50.                         echo "/proc/$PID""
  51.                         echo "Pid: "$(< $PID)
  52.                 else
  53.                         echo "Server down"
  54.                 fi
  55.                 STATUT=4
  56.         ;;
  57.         *)
  58.                 echo "{start|stop|restart|status}"
  59.                 STATUT=3
  60. esac
  61. exit $STATUT


Message édité par leirn le 22-09-2002 à 21:38:39

---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 22-09-2002 à 21:29:55    

Je sais pas si c'est volontaire ou pas, mais appeler une variable "PATH" c'est pas une très bonne idée ...
 
De plus, j'utiliserais [ -x "$PATH" ] plutot que [ -e $PATH ] .
 
Sinon, pourquoi utiliser une variable "STATUT" plutot que de faire exit directement ?
 
Enfin, je ne vois pas à quel endroit tu effaces ton fichier PID.

Reply

Marsh Posté le 22-09-2002 à 21:37:10    

[Albator] a écrit a écrit :

Je sais pas si c'est volontaire ou pas, mais appeler une variable "PATH" c'est pas une très bonne idée ...
 
De plus, j'utiliserais [ -x "$PATH" ] plutot que [ -e $PATH ] .
 
Sinon, pourquoi utiliser une variable "STATUT" plutot que de faire exit directement ?
 
Enfin, je ne vois pas à quel endroit tu effaces ton fichier PID.




 
je ne l'efface pas par ce qu'il me semble que pure le fait seul... d'apres les tests ke g pu en faire...
 
j'utilise statut du au fait ke kkun me la proposé avant
 
pour le x, c une eventualité... je le modifie de suite, ainsi ke le nom du path


Message édité par leirn le 22-09-2002 à 21:38:07

---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 22-09-2002 à 21:37:10   

Reply

Marsh Posté le 23-09-2002 à 21:07:47    

Je verrais plutot quelque chose du genre pour status)
 
 
status)
 
if [  $( ps -C $PROGRAMME -o pid=  )  -eq $( cat $PID ) ]
then echo " le programme tourne -> OK"
 
else
 
...
 
fi


Message édité par becket le 23-09-2002 à 21:10:07
Reply

Marsh Posté le 23-09-2002 à 21:30:47    

becket a écrit a écrit :

Je verrais plutot quelque chose du genre pour status)
 
 
status)
 
if [  $( ps -C $PROGRAMME -o pid=  )  -eq $( cat $PID ) ]
then echo " le programme tourne -> OK"
 
else
 
...
 
fi




 
en fait je c pas pkoi c pas la derniere version


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 23-09-2002 à 22:11:26    

voici la version 0.002 avec status, et normaleent tout fonctionne... suaf si g encore deconner...
 

Code :
  1. #!/bin/sh
  2. #
  3. # Fichier de lancement/arret de pure ftpd version 0.002
  4. # ecrit par Leirn
  5. #
  6. #
  7. # Liste des statuts:
  8. # 0: arret normal
  9. # 1: fichier introuvable
  10. # 2: serveur deja lancé
  11. # 3: argument incompris
  12. # 4: status
  13. #
  14. #Variables
  15. NAME="pure-ftpd"
  16. PUREPATH="/usr/local/sbin/pure-ftpd"
  17. OPTIONS="-E -j -lpuredb:/etc/pureftpd.pdb"
  18. PID="/var/run/pure-ftpd.pid"
  19. STATUT=0
  20. case "$1" in
  21.         start)
  22.                 if [ -e $PID ];
  23.                 then
  24.                         if [ -d /proc/$(<$PID) ];
  25.                         then
  26.                                 echo "Pure-FTPd already running"
  27.                                 STATUT=2
  28.                         fi
  29.                 elif [ -x $PUREPATH ];
  30.                 then
  31.                         echo "Lancement de Pure-FTPd"
  32.                         $PUREPATH $OPTIONS &
  33.                 else
  34.                         echo "Pure-FTPd n'a pas été trouvé"
  35.                         STATUT=1
  36.                 fi
  37.         ;;
  38.         stop)
  39.                 echo "Arret de pure-FTPd"
  40.                 /usr/bin/killall $NAME
  41.         ;;
  42.         restart)
  43.                 $0 stop
  44.                 $0 start
  45.         ;;
  46.         status)
  47.                 if [ -e $PID ];
  48.                 then
  49.                         if [ -d /proc/$(<$PID) ];
  50.                         then
  51.                                 echo "Server running"
  52.                                 echo "Pid: "$(<$PID)
  53.                         fi
  54.                 else
  55.                         echo "Server down"
  56.                 fi
  57.                 STATUT=4
  58.         ;;
  59.         *)
  60.                 echo "{start|stop|restart|status}"
  61.                 STATUT=3
  62.         ;;
  63. esac
  64. exit $STATUT


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 23-09-2002 à 22:45:55    

la je capte pas:
 
 

Code :
  1. #!/bin/sh
  2. #
  3. # Fichier de lancement/arret de pure ftpd version 0.002
  4. # ecrit par Leirn
  5. #
  6. #
  7. # Liste des statuts:
  8. # 0: arret normal
  9. # 1: fichier introuvable
  10. # 2: serveur deja lancé
  11. # 3: argument incompris
  12. # 4: status
  13. #
  14. #Variables
  15. NAME="pure-ftpd"
  16. PUREPATH="/usr/local/sbin/pure-ftpd"
  17. OPTION="-E -j -lpuredb:/etc/pureftpd.pdb"
  18. PID="/var/run/pure-ftpd.pid"
  19. STATUT=0
  20. case "$1" in
  21.         start)
  22.                 if [ -e $PID ];
  23.                 then
  24.                         if [ -d /proc/$(<$PID) ];
  25.                         then
  26.                                 echo "Pure-FTPd already running"
  27.                                 STATUT=2
  28.                         fi
  29.                 elif [ -x $PUREPATH ];
  30.                 then
  31.                         echo "Lancement de Pure-FTPd"
  32.                         $PUREPATH $OPTION &
  33.                 else
  34.                         echo "Pure-FTPd n'a pas été trouvé"
  35.                         STATUT=1
  36.                 fi
  37.         ;;
  38.         stop)
  39.                 echo "Arret de pure-FTPd"
  40.                 /usr/bin/killall $NAME
  41.         ;;
  42.         restart)
  43.                 $0 stop
  44.                 $0 start
  45.         ;;
  46.         status)
  47.                 if [ -e $PID ];
  48.                 then
  49.                         if [ -d /proc/$(<$PID) ];
  50.                         then
  51.                                 echo "Server running"
  52.                                 echo "Pid: "$(<$PID)
  53.                         fi
  54.                 else
  55.                         echo "Server down"
  56.                 fi
  57.                 STATUT=4
  58.         ;;
  59.         *)
  60.                 echo "{start|stop|restart|status}"
  61.                 STATUT=3
  62. esac
  63. exit $STATUT


 
il est tel kel, le stop fonctionne, le start fonctionne, mais le restart n'effectu k'un stop :/
 
vous savez pkoa?


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 23-09-2002 à 23:22:10    

et si tu met un sleep entre les 2 ( peut etre que le stop/start va trop vite )  
 
faut faire gaffe a un truc aussi avec pureftpd toute nouvelle connection sur le ftp recrée un process ( IDLE UPLOAD ou DOWNLOAD )
et dans le cas d un reload il est plus judicieux de faire un kill -HUP  .

Reply

Marsh Posté le 23-09-2002 à 23:42:42    

houplaboom42 a écrit a écrit :

et si tu met un sleep entre les 2 ( peut etre que le stop/start va trop vite )  
 
faut faire gaffe a un truc aussi avec pureftpd toute nouvelle connection sur le ftp recrée un process ( IDLE UPLOAD ou DOWNLOAD )
et dans le cas d un reload il est plus judicieux de faire un kill -HUP  .




 
ke dalle, g l'impression kil appelle meme pas start


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 24-09-2002 à 06:53:53    

1-
 
/etc/init.d/$0 stop
/etc/init.d/$0 start
 
 
2- Ton status) ne vérifie toujours pas si le numero de pid contenu dans ton fichier pid correspond bien au pid de ton process  
 
3- Comme déjà dit auparavant, quand tu fais stop), tu dois vérifier   la supression ou supprimer via ton script le fichier  pid

Reply

Marsh Posté le 24-09-2002 à 10:50:53    

A tous les coups, ton script de démarrage porte le même nom que l'éxécutable qu'il lance, et du coup quand tu fais stop, il se tue lui-même en appelant killall .
 
C'est pas une bonne idée d'utiliser killall  :hello:

Reply

Marsh Posté le 24-09-2002 à 16:50:58    

[Albator] a écrit a écrit :

A tous les coups, ton script de démarrage porte le même nom que l'éxécutable qu'il lance, et du coup quand tu fais stop, il se tue lui-même en appelant killall .
 
C'est pas une bonne idée d'utiliser killall  :hello:  




 
c ke t pas con toa....
 
un petit kill $(<$PID) alors...?


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 24-09-2002 à 16:52:06    

becket a écrit a écrit :

1-
 
/etc/init.d/$0 stop
/etc/init.d/$0 start
 
 
2- Ton status) ne vérifie toujours pas si le numero de pid contenu dans ton fichier pid correspond bien au pid de ton process  
 
3- Comme déjà dit auparavant, quand tu fais stop), tu dois vérifier   la supression ou supprimer via ton script le fichier  pid  




 
comme je te l'ai deja dit le fichier pid est supprimé deja, pas par moi


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 24-09-2002 à 19:16:45    

Rappeler ton script dans le restart, c'est pas une bonne idée. Ecrit plutôt une fonction qui fait le start, une fonction qui fait le stop, et appelle ces deux fonctions dans le restart. Ca donnerait qq chose du genre :

Code :
  1. [...]
  2. pftpd_start () {
  3.         [...]
  4. }
  5. pftpd_stop () {
  6.         [...]
  7. }
  8. case "$1" in
  9.         start)
  10.                 pftpd_start
  11.                 ;;
  12.         stop)
  13.                 pftpd_stop
  14.                 ;;
  15.         restart)
  16.                 pftpd_stop
  17.                 pftpd_start
  18.                 ;;
  19. [...]


 
Austre chose : tu n'est pas obligé de mettre de ";" au bout de ta ligne si tu met le then sur une autre ligne. Par contre si tu le met, tu peux mettre le le then à la suite.


Message édité par matafan le 24-09-2002 à 19:18:04
Reply

Marsh Posté le 24-09-2002 à 21:19:33    

oki, je fais ca tout al'heure, merci

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed