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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash] Bugs dans mon script, need help !

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash] Bugs dans mon script, need help !

n°1018937
The_Snake4​7
Posté le 06-03-2008 à 16:09:51  profilanswer
 

Dans le cadre d'un TP en classe je dois faire une partie avec un petit script pour faire quelques petites choses (affichage, réglage et synchronisation NTP de l'heure)
J'ai un bug dans mon code que j'arrive pas à identifier, au niveau du menu.
 
Voici la fonction en question :

Code :
  1. systemDateMenu()
  2. {
  3.  clear;
  4.  echo "------- Gestion de l'heure système -------";
  5.  echo "1 - Afficher l'heure actuelle";
  6.  echo "2 - Changer l'heure et la date courante";
  7.  echo "3 - Configurer date/heure via serveur NTP";
  8.  echo "4 - Gérer liste serveurs NTP";
  9.  read -p "Quel est votre choix ?" choice;
  10.  case "$choice" in
  11.   1)
  12.    displayDate;
  13.    ;;
  14.   2)
  15.    configDateHour;
  16.    ;;
  17.   3)
  18.    configDateHourNTP;
  19.    ;;
  20.   4)
  21.    configNTPList;
  22.    ;;
  23.   *)
  24.    systemDateMenu;
  25.    ;;
  26.  esac
  27. }
  28. systemDateMenu;


 
L'erreur intervient à la ligne de "displayDate" selon le shell Linux (Ubuntu) et "configDateHour" selon celui de Mac OS X.
 
Lequel dois-je taper ? :D

mood
Publicité
Posté le 06-03-2008 à 16:09:51  profilanswer
 

n°1018938
wedgeant
Da penguin inside
Posté le 06-03-2008 à 16:13:24  profilanswer
 

euh, quelle est l'erreur en question ? [:cerveau klem]
y m'parait bien ce code :jap:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1018941
The_Snake4​7
Posté le 06-03-2008 à 16:15:37  profilanswer
 

Hum j'y comprends rien... Donc en fait je code sous Mac OS X avec Smultron. J'enregistre les fichiers en .sh que je copie en suite dans ma VM Ubuntu. En copiant le .sh contenant cette fonction, j'obtiens des erreurs. En copiant le code dans gedit sur Ubuntu, ça marche...
Y'aurait-il un encodage texte précis à respecter ?

n°1018943
Fork Bomb
Obsédé textuel
Posté le 06-03-2008 à 16:17:19  profilanswer
 

Balances tout le code.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1018945
The_Snake4​7
Posté le 06-03-2008 à 16:22:36  profilanswer
 

Y'a rien de spécial dedans, ça ressemble grosso modo à ça. Le truc que je capte pas c'est pourquoi Smultron me sort des .sh qui buggent et pourquoi gedit lui me donne des .sh qui marchent bien.
 
Quel encodage choisir pour les .sh ? ASCII ? UTF-8 ? ISO ?

n°1018979
matafan
Posté le 06-03-2008 à 18:04:51  profilanswer
 

La moindre des choses ça serait quand même de donner l'erreur exacte que tu as, là on comprend rien.
 
Dans ton script il y a des ; en trop mais ça ne pose pas de problème. Tu es aussi sensé mettre un espace avant le () dans la définition d'une fonction.

n°1018993
The_Snake4​7
Posté le 06-03-2008 à 20:54:56  profilanswer
 

Ok je débute en bash à vrai dire. Dans le code que j'enregistre via smultron (qui détecte bien que je scripte en sh) l'erreur donnée correspond à un caractère non attendu au case, par exemple '1' non expected (expecting '(')
En c/c puis réenregistrement sur gedit ça passe...
 
Concernant les ; en trop, pas besoin d'en mettre à la fin de toutes les lignes (pour l'instant je ne code que du C j'ai peu de comparaison) ?
 
Merci en tout cas pour ces quelques conseils !
 
Une dernière petite chose, j'ai pas mal cherché sur la toile mais je n'ai pas trouvé de réponse. Existe-t-il un moyen d'avoir une sortie standard (> ou >> ) en sudo pour éviter d'obliger à lancer le script en étant en root ?
J'en ai besoin pour :

Code :
  1. read -p "Quelle est l'adresse du serveur NTP à supprimer de la liste ?" supprntp;
  2.  sed '/$supprntp'/d /etc/ntp.conf > /etc/ntp.conf


Message édité par The_Snake47 le 06-03-2008 à 20:57:32
n°1019053
wedgeant
Da penguin inside
Posté le 07-03-2008 à 08:29:56  profilanswer
 

Mais on veut pas ton interprétation des erreurs, on veut le message en clair, écrit ici, nom d'un tux !
 
Pour les ";", non, ça n'est pas nécessaire d'en mettre à chaque ligne, mais ça ne devrait pas générer d'erreur ...


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1019206
The_Snake4​7
Posté le 07-03-2008 à 12:28:40  profilanswer
 

Non les ; ne génèrent pas d'erreur en effet. Je vais nettoyer tous mes scripts dans ce cas pour que ça fasse + propre :)
 
Pour l'erreur j'essaie de la refaire en enregistrant un nouveau script via smultron mais bizaremment j'ai plus de bug... Pourtant ça venait bien de là au départ le problème. Cet aprem je vais continuer donc si jamais je revois l'erreur je poste ça en bon et du forme, promis.
 
Pas d'idée à propos de la sortie en pseudo sudo pour éviter d'être loggé en root ? L'idée c'est de créer des scripts pour faire un outil d'administration et dans ce cadre là je préfèrerais passer tout avec sudo (je débute dans linux mais il parait qu'il vaut mieux s'habituer à se logger le moins possible en root) si c'est possible bien sur.

n°1019208
wedgeant
Da penguin inside
Posté le 07-03-2008 à 12:31:09  profilanswer
 

mais smultron c'est un éditeur de texte ... j'vois pas le rapport entre l'éditeur que tu utilises et le résultat d'exécution du script ... [:cerveau kneu]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
mood
Publicité
Posté le 07-03-2008 à 12:31:09  profilanswer
 

n°1019213
matafan
Posté le 07-03-2008 à 12:40:01  profilanswer
 

Pour la sortie avec sudo je ne vois pas le problème... Tu as deux solutions :

sudo command > out<


ou :

sudo sh -c 'command > out'


Dans le premier cas le fichier "out" est créé par ton user puisque c'est la sortie de "sudo" (qui est la sortie de la commande) qui est loggée. Dans le deuxième cas le fichier est créé par root puisque c'est directement la sortie de la commande qui est loggée (et sudo ne voit pas de sortie).
 
Pour stderr c'est pareil avec 2> au lieu de >.

n°1019320
The_Snake4​7
Posté le 07-03-2008 à 16:46:38  profilanswer
 

wedgeant a écrit :

mais smultron c'est un éditeur de texte ... j'vois pas le rapport entre l'éditeur que tu utilises et le résultat d'exécution du script ... [:cerveau kneu]


 
Pareil, je cherche à comprendre pourquoi le même script enregistré avec smultron et gedit donnait pour le premier une erreur et pas pour le second. Le souci étant que le bug ne se produit plus...
 
Concernant la sortie ça ne marche pas, voici le bout de code :
 

Code :
  1. read -p "Quelle est l'adresse du serveur que vous souhaitez ajouter ?" newntp
  2.    sudo sh -c 'echo "server $newntp" >> /etc/ntp.conf'
  3.    echo " "
  4.    echo "Serveur $newntp ajouté avec succés"


 
J'ai essayé avec : sudo echo "server $newntp" >> /etc/ntp.conf
mais même résultat quand j'édite le fichier ntp.conf aucune ligne ne s'ajoute. En étant loggé en root en revanche ça marche impeccable.

n°1019333
Fork Bomb
Obsédé textuel
Posté le 07-03-2008 à 17:10:16  profilanswer
 

Norrmal, toutes les taches que tu demandes sont des taches d'admin'.
Crées ton script, vires les "sudo" qui traines, lances en root.
Tu devrais plus avoir de problèmes.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1019368
matafan
Posté le 07-03-2008 à 20:55:10  profilanswer
 

Pourtant chez moi ça marche :

$ sudo sh -c 'echo "# toto" >> /etc/ntp.conf'
$ tail -1 /etc/ntp.conf
# toto


Tu es sûr que sudo est configuré correctement ? Ton user est dans le groupe wheel ?


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

  [bash] Bugs dans mon script, need help !

 

Sujets relatifs
[bash] Commande pour supprimer des mots (resolu)screen dans un script (tunnel ssh)
traduire un script BASH en KSH (pb avec sed)script shell qui renome des repertoire.
HELP plus de clavier au demarrageBASH Passage de paramètre contenant des espaces
script shell pour compilation latex[résolu] probleme eth* debian : help svp
help ecran noir mandriva apres commande numlockx 
Plus de sujets relatifs à : [bash] Bugs dans mon script, need help !


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