Commande pipée qui n'en fini pas

Commande pipée qui n'en fini pas - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-08-2009 à 18:04:32    

Bonjour à tous,
 
Je ne comprend pas pourquoi quand je fais :

Code :
  1. [root@serv:] sudo -l 2>&1
  2. >>> sudoers file: syntax error, line 1 <<<
  3. sudo: parse error in /opt/sfw/etc/sudoers near line 1
  4. [root@serv]


 
(Donc j'ai le prompt tout de suite après)
 
Par contre quand je fais :
 

Code :
  1. sudo -l 2>&1 | grep "syntax"
  2. >>> sudoers file: syntax error, line 1 <<<


 
Ca mouline pendant 3 plombes avant de me redonner la main.
 
Avez vous une idée ?
 
Merci

Reply

Marsh Posté le 26-08-2009 à 18:04:32   

Reply

Marsh Posté le 26-08-2009 à 23:36:33    

que cherches tu à faire ?

Reply

Marsh Posté le 27-08-2009 à 09:08:05    

J'ai des machines sur lesquelles je ne peux pas vérifier la syntaxe de mon fichier sudoers avec visudo -c -f <fichier>
 
Donc j'ai écrit un script :

Code :
  1. cat $SUDOERS > /tmp/sudoers.save
  2. cat /tmp/sudoers > $SUDOERS
  3. sudo_ret=`sudo -l 2>&1| grep syntax | wc -l`
  4. cat /tmp/sudoers.save > $SUDOERS
  5. echo "" > /tmp/sudoers.save
  6. rm /tmp/sudoers.save
  7. if [ $sudo_ret -eq 0 ]; then
  8.    echo "Status: OK/0\nEND"
  9.    exit 0;
  10. else
  11.   echo "Status: KO/64\nEND"
  12.   exit 64;
  13. fi
  14. fi


 
Mais du coup il est horriblement long ...
 
Comment accélérer le processus ?


Message édité par bichtoubard le 27-08-2009 à 09:22:10
Reply

Marsh Posté le 27-08-2009 à 09:43:14    

Bon je suis passé par un fichier, mais si vous avez des idées je suis quand même preneur par curiosité.
 
En effet, je pensais que le pipe faisait un dump de stdout vers un fichier pour le traiter, or apparemment ce n'est pas le cas puisque ça ne fonctionne pas pareil que quand moi je fais un dump de stdout pour traitement.
 
Donc comment fonctionne le pipe ?

Reply

Marsh Posté le 27-08-2009 à 10:09:08    

sudo -l >/dev/null 2>&1 && echo OK || echo KO

Reply

Marsh Posté le 27-08-2009 à 12:32:57    

Bonne idée mais ce n'est pas réalisable dans mon cas !
 
En effet, "echo OK" va s'exécuter que si la valeur de retour est 0, ce qui n'est pas forcément le cas, par exemple si le user qui lance "sudo -l" n'est pas habilité à lancer des commandes.
 
Mais ça ne voudra pas dire pour autant qu'il y a une erreur de syntaxe dans le fichier sudoers...
 
C'est pour ça que je passe par un grep

Reply

Marsh Posté le 27-08-2009 à 13:50:43    

Citation :

sudo_ret=`sudo -l 2>&1| grep syntax | wc -l`


En plus propre :

Citation :

sudo_ret=$(sudo -l 2>&1| grep -cF syntax)


My 2 cents.


---------------
La réponse est 42
Reply

Marsh Posté le 31-08-2009 à 12:53:48    

Citation :


grep: illegal option -- F


 
Mais merci je retiens l'astuce.


Message édité par bichtoubard le 31-08-2009 à 12:54:02
Reply

Marsh Posté le 31-08-2009 à 19:12:40    

Citation :

grep: illegal option -- F


gné ?
man grep :

Citation :

-F, --fixed-strings
    Interpréter le MOTIF comme une liste de chaînes de caractères, séparées par des sauts de ligne. Chacune d'entre elles doit être recherchée.


Tu es sous Ubuntu (ATTENTION, cette question contient un troll en elle-même !) ?


---------------
La réponse est 42
Reply

Marsh Posté le 01-09-2009 à 09:28:33    

Non je ne suis pas sous Ubuntu, j'ai besoin de commandes qui peuvent s'executer sur plusieurs types d'Unix (HP-UX, Solaris, AIX, Linux) donc c'est pas toujours les commandes GNU de base.

Reply

Marsh Posté le 01-09-2009 à 09:28:33   

Reply

Marsh Posté le 01-09-2009 à 11:18:51    

Oki, le -c fonctione au moins ?


---------------
La réponse est 42
Reply

Sujets relatifs:

Leave a Replay

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