Commandes et Sortie d'erreurs

Résolu
Shooter78 Messages postés 14 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aimerais stocker le résultat d'une commande dans un fichier texte mais je n'y arrive pas, lorsque je fait ceci:

net rpc shutdown -f -t 60 -I 0.0.0.0 -U identifiant%password > test.log
ou cela :
net rpc shutdown -f -t 60 -I 0.0.0.0 -U identifiant%password 2>&1 > test.log 
le fichier est bien crée mais il est vide.

Comment resoudre ce problème ?
Merci d'avance,

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Pré-requis

    Avant de commencer il faut comprendre qu'un processus écrit sur deux flux :
    - le premier (le flux de sortie), qui correspond aux opérateurs
    1>
    (aussi noté
    >
    ) et
    1>>
    (aussi noté
    >>
    )
    - le second (le flux d'erreur), qui correspond aux opérateurs
    2>
    et
    2>>
    .

    Ces flux peuvent être rattrapés par une redirection (l'un des opérateurs mentionnés si dessous ou par un pipe
    |
    ) pour être redirigé vers un fichier de données (tous les opérateurs mentionnés ci dessous excepté
    |
    ) ou vers le flux d'entrée d'un nouveau processus (dans le cas de
    |
    ).

    Syntaxe

    L'ordre dans lequel tu écris tes redirections est important. Prenons l'exemple de la commande
    find
    . Celle-ci écrit naturellement les résultats (les répertoires trouvés) dans le flux de sortie, et les erreurs (dues aux permissions par exemple) dans le flux d'erreur.

    find /etc/

    1) Si tu regardes ci-dessous, le flux de sortie est redirigé vers toto.txt ...

    (mando@silk) (~) $ find /etc/ 2>&1 > toto.txt
    find: "/etc/vpnc": Permission non accordée
    find: "/etc/polkit-1/localauthority": Permission non accordée
    find: "/etc/ssl/private": Permission non accordée

    ... et le flux d'erreur est redirigé vers le flux de sortie comme le prouve :

    (mando@silk) (~) $ find /etc/ 2>&1 > toto | grep -v find
    (mando@silk) (~) $

    2) Si au contraire tu écris ceci, tout se passe "bien" :

    (mando@silk) (~) $ find /etc/  1> toto.txt 2>&1
    (mando@silk) (~) $

    Dans ton cas

    Ainsi dans ton cas tu as probablement simplement écrit tes redirections dans le mauvais ordre, ce qui donnerait :

    net rpc shutdown -f -t 60 -I 0.0.0.0 -U identifiant%password 1> test.log  2>&1 

    Peut-être même que dans ton cas, il suffit d'écrire directement le flux d'erreur dans le fichier et ne pas rediriger le flux de sortie comme ceci :

    net rpc shutdown -f -t 60 -I 0.0.0.0 -U identifiant%password 2> test.log 

    Bonne chance
    3
  2. Shooter78 Messages postés 14 Statut Membre 3
     
    Merci, ça fonctionne.
    J'ai rarement vu un post aussi clair.
    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
       
      Merci pour le compliment et bonne continuation ;-)
      0