Commandes et Sortie d'erreurs

Résolu/Fermé
Shooter78 Messages postés 12 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 13 septembre 2014 - 20 janv. 2014 à 22:09
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 21 janv. 2014 à 10:55
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,
A voir également:

2 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié par mamiemando le 20/01/2014 à 22:36
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
Shooter78 Messages postés 12 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 13 septembre 2014 3
Modifié par mamiemando le 21/01/2014 à 10:55
Merci, ça fonctionne.
J'ai rarement vu un post aussi clair.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 janv. 2014 à 10:55
Merci pour le compliment et bonne continuation ;-)
0