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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [résolu][BASH]commande for foireuse ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu][BASH]commande for foireuse ?

n°1297902
bardiel
Debian powa !
Posté le 02-12-2011 à 13:49:59  profilanswer
 

Bonjour à tous, j'ai un petit soucis avec un de mes scripts, chargé de modifier des droits utilisateurs.
Je vous mets la version expurgée de pas mal de commandes subsidiaire :

Code :
  1. #!/bin/bash
  2. # 2010-2011 - GNU GPL
  3. # Script pour placer les ACL plus rapidement que par l'utilisation
  4. # seule de la ligne de commande. Il ne s'agit que de raccourcis et
  5. # d'une demande en boucle de la commande.
  6. entrer_utilisateur() {
  7. echo "### ENTRER UN UTILISATEUR SUR UN DOSSIER ###"
  8. echo "Quel dossier (depuis la racine) voulez-vous modifier ?"
  9. read cible
  10. echo "Avant modification :"
  11. getfacl $cible
  12. echo "Voulez-vous le modifier ? (o/N)"
  13. read lecture
  14.  case $lecture in
  15.   o | O) break
  16.   ;;
  17.   *) echo "Abandon."
  18.   acl_base
  19.  esac
  20. echo "Combien d'utilisateurs voulez-vous entrer ?"
  21. read nbre
  22. for ((i=0; i<$nbre; i++)); do
  23. echo "Nom d'utilisateur ?"
  24. read nom
  25. setfacl -Rm u:$nom:rwx $cible
  26. setfacl -Rm d:u:$nom:rwx $cible
  27. done
  28. setfacl -Rk u:: $cible
  29. setfacl -Rk d:u:: $cible
  30. setfacl -Rx d:u:: $cible
  31. echo "Après modification :"
  32. getfacl $cible
  33. acl_base
  34. }
  35. (... bla bla bla autres commandes du même genre)
  36. acl_base(){
  37. echo "Que voulez-vous faire ?"
  38. echo "1 - entrer l'accès à un ou plusieurs utilisateurs."
  39. echo "2 - supprimer l'accès à un ou plusieurs utilisateurs."
  40. echo "3 - entrer l'accès à un ou plusieurs groupes."
  41. echo "4 - supprimer l'accès à un ou plusieurs groupes."
  42. echo "5 - supprimer un groupe par défaut sur un dossier."
  43. echo "6 - supprimer un utilisateur par défaut sur un dossier."
  44. echo "7 - bloquer un utilisateur sur un dossier."
  45. echo "0 - pour annuler."
  46.  read lecture
  47.  case $lecture in
  48.   1) entrer_utilisateur
  49.   ;;
  50.   2) supprimer_utilisateur
  51.   ;;
  52.   3) entrer_groupe
  53.   ;;
  54.   4) supprimer_groupe
  55.   ;;
  56.   5) supprimer_defautg
  57.   ;;
  58.   6) supprimer_defautu
  59.   ;;
  60.   7) bloquer_util
  61.   ;;
  62.   *) echo "Abandon."
  63.   exit 1
  64.  esac
  65. }
  66. #verification des droits de l'utilisateur (id root = 0)
  67. IDuser=`id -u`
  68. if [ ! $IDuser -eq 0 ]
  69. then
  70.  echo "Vous  n'avez pas les droits ROOT."
  71.  exit 1
  72. fi
  73. acl_base
  74. exit 0


 
Et là c'est le drame, par un sh monscript.sh j'ai en retour :

Citation :

monscript.sh 24: Syntax error: Bad for loop variable


 
WTF ? :heink:


Message édité par bardiel le 09-12-2011 à 23:34:31

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
mood
Publicité
Posté le 02-12-2011 à 13:49:59  profilanswer
 

n°1297904
Kadaj
Posté le 02-12-2011 à 14:07:43  profilanswer
 

bash monscript.sh

n°1297916
bardiel
Debian powa !
Posté le 02-12-2011 à 15:58:55  profilanswer
 

Hmm ok, ça fonctionne [:cdtf:5]  
 
Donc je le lance, et paf à un moment pour valider ou non la modification, correspondant à ce bout de code :

Code :
  1. echo "Voulez-vous le modifier ? (o/N)"
  2.  case $lecture in
  3.   o | O) break
  4.   ;;
  5.   *) echo "Abandon."
  6.   acl_base
  7.  esac
  8. (... la suite du script)


J'ai en magnifique réponse si je répond "o" ou "O" (pour oui quoi :o ) :

Citation :

break: ceci n'a un sens que dans une boucle « for », « while » ou « until »


Mais le pire dans l'histoire, c'est que le script continue normalement après :pt1cable:  
 
Pourquoi un foutu script farpaitement fonctionnel sur Debian Etch ne fait que des misères sur Debian Squeeze ? :pfff:


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1297923
Kadaj
Posté le 02-12-2011 à 16:58:19  profilanswer
 

Pourquoi tu ne fais pas un if? Ton case est inutile.
 

Code :
  1. if [[  ( $lecture != "o" ) && ( $lecture != "O" ) ]]
  2. then
  3.          echo "Abandon."
  4.          acl_base
  5. fi


Message édité par Kadaj le 02-12-2011 à 16:58:41
n°1297925
bardiel
Debian powa !
Posté le 02-12-2011 à 17:04:44  profilanswer
 

bah, c'était pour faire "plus propre" et "parce que j'avais appris comme ça", néanmoins très bonne remarque je change :jap:  
 
...
 
Sauf que je ne pourrais retester que lundi, vu qu'il s'agit d'un serveur du boulot, et que je n'ai pas envie d'y retourner de suite :D


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1297928
agentsteel
Posté le 02-12-2011 à 20:08:20  profilanswer
 

les joies du shell et ses variantes, moi c'est avec les tests if que j'ai du mal :D


---------------
http://agentoss.wordpress.com/
n°1298542
twocats
Posté le 09-12-2011 à 21:27:47  profilanswer
 

Manque un ;; ma poule :D :

case $lecture in
  o | O) break
  ;;
  *) echo "Abandon."
  acl_base
 ;;
 esac


pareil :

case $lecture in
  1) entrer_utilisateur
  ;;
  2) supprimer_utilisateur
  ;;
  3) entrer_groupe
  ;;
  4) supprimer_groupe
  ;;
  5) supprimer_defautg
  ;;
  6) supprimer_defautu
  ;;
  7) bloquer_util
  ;;
  *) echo "Abandon."
  exit 1
  ;;
 esac


Message édité par twocats le 09-12-2011 à 21:34:29

---------------
La réponse est 42
n°1298549
bardiel
Debian powa !
Posté le 09-12-2011 à 23:34:12  profilanswer
 

Effectivement, avec le ;; ça fonctionne déjà beaucoup mieux :o
Je l'avais trouvé ce matin... mais pourquoi ça fonctionnait avant sans me mettre cette erreur ? :pt1cable:


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D

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

  [résolu][BASH]commande for foireuse ?

 

Sujets relatifs
Shell linux commande scpAide en bash
Comprendre la commande htop , valeurs de Ram affichés fausses ?bash : extraire 1 chaine
Configuration box foireuse pour mon Apache ou bien ? [Résolu][passwd] - affecter directement un passwd à la création d'un user [RES
Script Bash sauvegarde[Résolu] Bash - Exporter sans interpréter.
Linux ne reconnaît pas mes disques SATA + commande pci=nomsi[BASH] Existence de fichiers par extension
Plus de sujets relatifs à : [résolu][BASH]commande for foireuse ?


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