Script shell

Script shell - Shell/Batch - Programmation

Marsh Posté le 09-05-2005 à 16:15:40    

Bonjour à tous
 
J'ai crée un script shell qui prend un paramètre : 0 ou 1
Si on passe 0 alors le script effectue un traitement
Si on lui passe 1, le script en effectue un autre
 
Ce que je voudrai c'est que l'utilisateur doit passer par l'étape 0 avant l'étape 1
c'est a dire que s'il lance le script pour la 1ere fois en passant 1 en paramètre, le script envoit un message d'erreur "tu dois passer par l'étape 0"
 
Grossomodo c ce que mon script doit faire.. vs auriez pas une ptite solution ?
 
Merci a ceux qui prendront le tmps de me répondre ;)
 
 
Jon

Reply

Marsh Posté le 09-05-2005 à 16:15:40   

Reply

Marsh Posté le 09-05-2005 à 23:31:39    

La seule solution, c'est de sauvegarder d'une maniere ou d'une autre une information d'etat sur le disque dur (dans un fichier, quoi). Difficile d'en dire plus si tu ne donnes pas plus d'info.

Reply

Marsh Posté le 10-05-2005 à 17:12:47    

Argh il y aurai pas une autre solution ?
 
Bon jvais essayer de détaillé un peu +
Mon script prend en paramètre un fichier contenant 2 infos :
- Une liste de fichiers
- Un flag prenant 0 ou 1
 
L'objectif du script est :
- d'analyser ces fichiers  (recherche de bug dans les fichiers, pas la peine d'expliquer comment)
- générer un rapport de l'analyse (listing des bugs rencontrés)
- générer un package de ces fichiers
 
Si le flag est égal à 0, alors le script n'effectue que l'analyse
Si le flag est egale à 1, le script effectue analyse + génération du package
 
Normalement le processus est le suivant :
1) L'utilisateur fait une premiere analyse de ses fichiers (flag=0)
 
En fonction du rapport obtenu, il fait ses ptites modifications dns ses fichiers
 
2) rénanalyse de ces fichiers + générer le package (flag=1)
(les bugs de la 2e analyse doivent logiquement être inférieure a la 1ere analyse)
 
 
Je voudrai que l'utilisateur passe obligatoirement par l'étape 1 (l'analyse seule) pour des raisons de rigueur...
Comment savoir qu'il a déjà bien effectué le traitement avec flag=0 ?
 
 
Merci d'avance pour vos réponses !


Message édité par jon301 le 10-05-2005 à 17:14:52
Reply

Marsh Posté le 10-05-2005 à 17:37:21    

Si tu es certain que tu ne quitteras pas le shell courant, tu peux stocker l'information dans une variable d'environnement.
 
Autrement => fichier.

Reply

Marsh Posté le 11-05-2005 à 11:59:58    

Je pense que je vais essayer la solution de la variable d'environnement
car pour le fichier, l'utilisateur peut très bien le trafiquer et pouvoir faire en sorte de passer directement à la génération du package...
le passage par l'analyse m'est obligatoire :(
 
sinon pour la var d'environnement je fais un export dans mon script  
mais lorsqu'il se termine la variable n'existe plu...
jsuis pas très doué sous UNIX en fait :/
comment faire pour que la variable reste ?
 
merci d'avance !

Reply

Marsh Posté le 11-05-2005 à 15:24:35    

Le coup de la variable d'environnement ne peut pas marcher, puisque qu'il est impossible pour un process de modifier l'environnement de son pere. A par si tu execute ton script avec ". /chemin/de/ton/script", qui a pour effet de faire interpreter ton script par le shell courrant au lieu de forker un nouveau shell.

Reply

Marsh Posté le 12-05-2005 à 11:23:35    

Ok merci de ta réponse
Finalement je sauvegarde l'état dans un fichier, en supposant que l'utilisateur est de bonne foi...
 
Merci à tous ^^

Reply

Marsh Posté le 12-05-2005 à 11:40:20    

Si l'utilisateur n'a pas acces en lecture au script, ce que tu peux faire c'est :
apres l'analyse du fichier, tu cree un fichier (s'il existe deja, tu le supprime et t'en cree un autre) et dedans tu y mets une clé
en fonction de la date de création (clé générée par un algorithme inventé par tes soins). Quand le script essaye de passer à l'etape suivant, il verifie que la clé correspond, sinon il balance le message d'erreur. Si la clé est assez grosse ça devrait empecher l'utilisateur de pouvoir faciliement la retrouver.  
 
 Ce serait mieux de faire quelque chose avec la date de modification, mais je ne sais pas si ce serait facile : il faudrait peut-être prendre en compte le décalage du au calcule de la clé.
 
  Enfin bon ce n'est qu'une idee :p


Message édité par kruso le 12-05-2005 à 11:54:01
Reply

Marsh Posté le 12-05-2005 à 11:55:03    

oui, j'ai édité mon message parce que  j'y avais pas pensé :p

Reply

Marsh Posté le 12-05-2005 à 11:55:45    

kruso a écrit :

oui, j'ai édité mon message parce que  j'y avais pas pensé :p


 
Et j'avais effacé ma remarque, parce que tu avais édité. Mais pas assez vite on dirait. :D

Reply

Marsh Posté le 12-05-2005 à 11:55:45   

Reply

Marsh Posté le 12-05-2005 à 14:20:38    

kruso a écrit :

Si l'utilisateur n'a pas acces en lecture au script


alors il ne peut pas exécuter le script.


Message édité par matafan le 12-05-2005 à 14:21:25
Reply

Marsh Posté le 12-05-2005 à 14:29:49    

ah bon ? je ne savais pas.
Désolé de mon intervention alors.
 
Edit : si c'était du C ... ;) (enfin j'ai pensé qu'il faudrait aussi supprimer un eventuel fichier invalide)


Message édité par kruso le 12-05-2005 à 14:33:30
Reply

Sujets relatifs:

Leave a Replay

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