Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1850 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Multimédia

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°159463
leirn
A.D.I.D.A.S.
Posté le 19-09-2002 à 20:56:08  profilanswer
 

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..."
mood
Publicité
Posté le 19-09-2002 à 20:56:08  profilanswer
 

n°160711
becket
Posté le 21-09-2002 à 20:40:57  profilanswer
 

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

n°160715
superX
Posté le 21-09-2002 à 21:02:53  profilanswer
 

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)

n°160744
wann
Posté le 22-09-2002 à 00:12:30  profilanswer
 

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

n°160981
leirn
A.D.I.D.A.S.
Posté le 22-09-2002 à 19:13:03  profilanswer
 

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..."
n°161002
[Albator]
MDK un jour, MDK toujours !
Posté le 22-09-2002 à 20:50:18  profilanswer
 

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

n°161008
leirn
A.D.I.D.A.S.
Posté le 22-09-2002 à 21:11:39  profilanswer
 

[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..."
n°161009
leirn
A.D.I.D.A.S.
Posté le 22-09-2002 à 21:16:24  profilanswer
 

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..."
n°161013
[Albator]
MDK un jour, MDK toujours !
Posté le 22-09-2002 à 21:29:55  profilanswer
 

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.

n°161015
leirn
A.D.I.D.A.S.
Posté le 22-09-2002 à 21:37:10  profilanswer
 

[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..."
mood
Publicité
Posté le 22-09-2002 à 21:37:10  profilanswer
 

n°161331
becket
Posté le 23-09-2002 à 21:07:47  profilanswer
 

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
n°161336
leirn
A.D.I.D.A.S.
Posté le 23-09-2002 à 21:30:47  profilanswer
 

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..."
n°161354
leirn
A.D.I.D.A.S.
Posté le 23-09-2002 à 22:11:26  profilanswer
 

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..."
n°161398
leirn
A.D.I.D.A.S.
Posté le 23-09-2002 à 22:45:55  profilanswer
 

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..."
n°161412
houplaboom​42
Posté le 23-09-2002 à 23:22:10  profilanswer
 

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  .

n°161436
leirn
A.D.I.D.A.S.
Posté le 23-09-2002 à 23:42:42  profilanswer
 

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..."
n°161470
becket
Posté le 24-09-2002 à 06:53:53  profilanswer
 

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

n°161510
[Albator]
MDK un jour, MDK toujours !
Posté le 24-09-2002 à 10:50:53  profilanswer
 

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:

n°161742
leirn
A.D.I.D.A.S.
Posté le 24-09-2002 à 16:50:58  profilanswer
 

[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..."
n°161743
leirn
A.D.I.D.A.S.
Posté le 24-09-2002 à 16:52:06  profilanswer
 

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..."
n°161871
matafan
Posté le 24-09-2002 à 19:16:45  profilanswer
 

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
n°161973
leirn
A.D.I.D.A.S.
Posté le 24-09-2002 à 21:19:33  profilanswer
 

oki, je fais ca tout al'heure, merci

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Multimédia

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

 

Sujets relatifs
[problèmes bash ....]recherche bon tutorial pour script bash
Script de reconnexion..... et script tout court......probleme avec bash
[bash 2.05] quelques questions simples ...bash: ./configure: /bin/sh: bad interpreter: Permission denied
bash: make: command not found ?!?!?!?Comment executer un script PERL ?
[ADSL] Meilleur script de reconnexion sous linux? 
Plus de sujets relatifs à : Mon premier script bash: (c correcte ou) c tout a revoir(? [ver 0.002]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR