[bash] Bugs dans mon script, need help !

Bugs dans mon script, need help ! [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-03-2008 à 16:09:51    

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

Reply

Marsh Posté le 06-03-2008 à 16:09:51   

Reply

Marsh Posté le 06-03-2008 à 16:13:24    

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


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 06-03-2008 à 16:15:37    

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 ?

Reply

Marsh Posté le 06-03-2008 à 16:17:19    

Balances tout le code.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 06-03-2008 à 16:22:36    

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 ?

Reply

Marsh Posté le 06-03-2008 à 18:04:51    

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.

Reply

Marsh Posté le 06-03-2008 à 20:54:56    

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
Reply

Marsh Posté le 07-03-2008 à 08:29:56    

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
Reply

Marsh Posté le 07-03-2008 à 12:28:40    

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.

Reply

Marsh Posté le 07-03-2008 à 12:31:09    

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
Reply

Marsh Posté le 07-03-2008 à 12:31:09   

Reply

Marsh Posté le 07-03-2008 à 12:40:01    

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 >.

Reply

Marsh Posté le 07-03-2008 à 16:46:38    

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.

Reply

Marsh Posté le 07-03-2008 à 17:10:16    

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 !"
Reply

Marsh Posté le 07-03-2008 à 20:55:10    

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 ?

Reply

Sujets relatifs:

Leave a Replay

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