Commandes et Sortie d'erreurs
Résolu
Bonjour,
J'aimerais stocker le résultat d'une commande dans un fichier texte mais je n'y arrive pas, lorsque je fait ceci:
Comment resoudre ce problème ?
Merci d'avance,
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.logou cela :
net rpc shutdown -f -t 60 -I 0.0.0.0 -U identifiant%password 2>&1 > test.logle fichier est bien crée mais il est vide.
Comment resoudre ce problème ?
Merci d'avance,
A voir également:
- Commandes et Sortie d'erreurs
- Invite de commandes - Guide
- Commandes terminal mac - Guide
- Remettre un pc en sortie d'usine - Guide
- Airpods 3 date de sortie - Guide
- Serveur entrant et sortant - Guide
2 réponses
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
- le second (le flux d'erreur), qui correspond aux opérateurs
Ces flux peuvent être rattrapés par une redirection (l'un des opérateurs mentionnés si dessous ou par un pipe
Syntaxe
L'ordre dans lequel tu écris tes redirections est important. Prenons l'exemple de la commande
1) Si tu regardes ci-dessous, le flux de sortie est redirigé vers toto.txt ...
... et le flux d'erreur est redirigé vers le flux de sortie comme le prouve :
2) Si au contraire tu écris ceci, tout se passe "bien" :
Dans ton cas
Ainsi dans ton cas tu as probablement simplement écrit tes redirections dans le mauvais ordre, ce qui donnerait :
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 :
Bonne chance
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