OVH Cloud OVH Cloud

Redirection de résultat de commande vers un fichier

11 réponses
Avatar
Rahan
Bonjour,

J'ai déjà posé la question mais n'ayant pas de réponse, je me permet de la
reposer une dernière fois avant de passer sur d'autres pistes plus complexes
pour résoudre mon problème.

Voila. Mon programme "MonProg.exe" tourne en permamance en mode DOS, il ne
s'arrête pas.

De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et ça
peut être à tout moment.

Je souhaite faire une redirection de ce qui est affiché à l'écran dans un
fichier en ajoutant l'heure au début ou à la fin de la ligne.

Pour la redirection, je peux biensure le faire avec :
MonProg.exe >> MonProg.log

Mais comment ajouter l'heure ? Malheureusement, l'heure n'est pas affichée
par MonProg.exe

Théoriquement, quelque chose du genre :
MonProg.exe >> time/t & MonProg.log
ou
MonProg.exe >> time/t %1 >> MonProg.log
ou quelque chose avec un grep...

Mais je ne trouve pas la bonne formule.

L'objectif final est de savoir à quel moment précis une ligne a été envoyée
par MonProg.exe. Et pour avoir cette info, il faut absolument loguer l'heure
à chaque fois que MonProg.exe imprime quelque chose à l'écran.

Une idée SVP ?

Merci !!!
Rahan

10 réponses

1 2
Avatar
Gilles LAURENT
"Rahan" a écrit dans le message de
news:44eeda1f$0$312$
| Bonjour,

Bonjour,

| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet
| de la reposer une dernière fois avant de passer sur d'autres pistes
| plus complexes pour résoudre mon problème.

La solution n'est pas simple ;-)

| Mon programme "MonProg.exe" tourne en permamance en mode DOS,
| il ne s'arrête pas. De temps à autre, MonProg.exe renvoit une ligne de
| texte à l'écran et ça peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran
| dans un fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

Il faut rediriger les flux stdout/stderr non pas vers un fichier mais
vers un pipe. On peut imaginer le scénario suivant :
- démarrage d'un agent dont le rôle est de créer le pipe :
>trapstdout monpipe >>monprog.log

- démarrage du programme CLI monprog.exe :
>monprog > .pipemonpipe

Le programme CLI trapstdout récupère les sorties de monprog, ajoute
l'heure de réception et écrit le tout dans le fichier de traces
monprog.log

Si cette solution vous convient alors je veux bien écrire un prototype.

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Rahan
"Gilles LAURENT" a écrit dans le message de
news:
"Rahan" a écrit dans le message de
news:44eeda1f$0$312$
| Bonjour,

Bonjour,

| J'ai déjà posé la question mais n'ayant pas de réponse, je me permet
| de la reposer une dernière fois avant de passer sur d'autres pistes
| plus complexes pour résoudre mon problème.

La solution n'est pas simple ;-)

| Mon programme "MonProg.exe" tourne en permamance en mode DOS,
| il ne s'arrête pas. De temps à autre, MonProg.exe renvoit une ligne de
| texte à l'écran et ça peut être à tout moment.
|
| Je souhaite faire une redirection de ce qui est affiché à l'écran
| dans un fichier en ajoutant l'heure au début ou à la fin de la ligne.
|
| Une idée SVP ?
|
| Merci !!!
| Rahan

Il faut rediriger les flux stdout/stderr non pas vers un fichier mais
vers un pipe. On peut imaginer le scénario suivant :
- démarrage d'un agent dont le rôle est de créer le pipe :
>trapstdout monpipe >>monprog.log

- démarrage du programme CLI monprog.exe :
>monprog > .pipemonpipe

Le programme CLI trapstdout récupère les sorties de monprog, ajoute
l'heure de réception et écrit le tout dans le fichier de traces
monprog.log

Si cette solution vous convient alors je veux bien écrire un prototype.

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Merci Gilles pour votre réponse !!

la solution me convient parfaitement surtout que je pense que c'est la seul
soultion possible avec du langage shell.

Un coup de pouce pour écrire le prototype SVP ?

Merci infiniment

Cordialement
Rahan

Avatar
Fred
dans : news:44eeda1f$0$312$,
Rahan écrivait :

Bonjour,


Bonjour,

De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et
ça peut être à tout moment.

Je souhaite faire une redirection de ce qui est affiché à l'écran
dans un fichier en ajoutant l'heure au début ou à la fin de la ligne.


Une idée en vbscript.
Copie colle ce qui suit dans un fichier texte que tu renommes en log.vbs

8<--- début ---------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile(WScript.Arguments(0), 8, True)
while Not WScript.StdIn.AtEndOfStream
logFile.WriteLine(Now & " : " & WScript.StdIn.ReadLine)
Wend
logFile.Close
8<--- fin -----------------------

Ensuite tu lances ton programme avec la commande suivante :

MonProg.exe | cscript log.vbs fichierLog.txt

Essaie déjà cela mais tu vas probablement avoir des problèmes de codage.
Il faudra probablement ensuite convertir le fichier obtenu pour qu'il
soit lisible avec bloc-note.
Pour cela : oem2ansi.vbs chez JC Bellamy
http://bellamyjc.org

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Gilles LAURENT
"Rahan" a écrit dans le message de
news:44eef04b$0$25060$

| Un coup de pouce pour écrire le prototype SVP ?

Il vient d'être écrit par Fred :-)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Rahan
"Gilles LAURENT" a écrit dans le message de
news:
"Rahan" a écrit dans le message de
news:44eef04b$0$25060$

| Un coup de pouce pour écrire le prototype SVP ?

Il vient d'être écrit par Fred :-)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




pas possible !!!!!!!! :)

Avatar
Rahan
"Fred" a écrit dans le message de
news:eH$
dans : news:44eeda1f$0$312$,
Rahan écrivait :

Bonjour,


Bonjour,

De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et
ça peut être à tout moment.

Je souhaite faire une redirection de ce qui est affiché à l'écran
dans un fichier en ajoutant l'heure au début ou à la fin de la ligne.


Une idée en vbscript.
Copie colle ce qui suit dans un fichier texte que tu renommes en log.vbs

8<--- début ---------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile(WScript.Arguments(0), 8, True)
while Not WScript.StdIn.AtEndOfStream
logFile.WriteLine(Now & " : " & WScript.StdIn.ReadLine)
Wend
logFile.Close
8<--- fin -----------------------

Ensuite tu lances ton programme avec la commande suivante :

MonProg.exe | cscript log.vbs fichierLog.txt

Essaie déjà cela mais tu vas probablement avoir des problèmes de codage.
Il faudra probablement ensuite convertir le fichier obtenu pour qu'il
soit lisible avec bloc-note.
Pour cela : oem2ansi.vbs chez JC Bellamy
http://bellamyjc.org

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




mais !!!! d'ou tu sors toi !!!!

ton script fonctionne à merveille !!!! :) :) :)
je viens de passer 3 jours de réflexion pour résoudre mon problème avec un
script et Monsieur Fred le règle en 3 minutes... lorsque j'ai vue ton
nouveau message, je me suis posé la question si ce mec avait vraiment eu le
temps de lire tout mon message :):)

franchement, bravo !! chapeau... merde alors !!!! :) :)

tu travails pour qui toi !!! dans quelle société !!???? pour le compte de
qui !!!?????
ton employeur n'a pas intérêt de te lâcher ! :):)

Tout simplement un Grand Merci pour ton aide précieuse !!
Ta solution apporte déjà la réponse à ma question au premier coup et en plus
c'est une solution qui donne bien des idées pour d'autres besoins !

Merci infiniment Fred pour cet aide incroyable

Cordialement
Rahan


Avatar
Fred
dans : news:44ef04ea$0$26939$,
Rahan écrivait :

mais !!!! d'ou tu sors toi !!!!


Je passais par là ;-)
Non, en fait je suis ce groupe avec intérêt mais mes activités m'ont un
peu éloigné du scripting.

ton script fonctionne à merveille !!!! :) :) :)


Modulo le problème d'encodage tout de même. Mais si ton programme est
anglais ou ne renvoie pas d'accents, pas de problème !

je viens de passer 3 jours de réflexion pour résoudre mon problème
avec un script et Monsieur Fred le règle en 3 minutes...


Un petit peu plus tout de même ! En fait je venais de commencer à faire
quelques essais quand j'ai vu apparaître le post de Gilles.

ton employeur n'a pas intérêt de te lâcher ! :):)


C'est moi qui suis en train de le lâcher lol
Mais nul n'est irremplaçable !

Tout simplement un Grand Merci pour ton aide précieuse !!


Content d'avoir aidé et surtout de voir tes remerciements !

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Rahan
"Gilles LAURENT" a écrit dans le message de
news:
"Rahan" a écrit dans le message de
news:44eef04b$0$25060$

| Un coup de pouce pour écrire le prototype SVP ?

Il vient d'être écrit par Fred :-)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Merci Gilles et Fred pour votre aide ! Vraiment très sympa.

Comme je disais, la solution que vous m'avez apporter va me service et je
sent qu'elle ne s'arretera jamais à me servire pour enormement de besoins de
tout genre.

Je voie que toi et Fred, vous ne vous contenter pas de suivre avec interet
ce forum mais surtout d'apporter les solutions :)

Mais c'est fou !!! Ce forum est bien particulier par rapport aux autres
différents forums sur le Net !!! En plus des compétences en codage, c'est un
forum de MC GIVER et d'artiste et c'est bien ce qui fait le charme de ce
forum.

Merci encore et Bon week-end à tous

Cordialement
Rahan

Avatar
jbongran
Fred wrote:
dans : news:44eeda1f$0$312$,
Rahan écrivait :

Bonjour,


Bonjour,

De temps à autre, MonProg.exe renvoit une ligne de texte à l'écran et
ça peut être à tout moment.

Je souhaite faire une redirection de ce qui est affiché à l'écran
dans un fichier en ajoutant l'heure au début ou à la fin de la ligne.


Une idée en vbscript.
Copie colle ce qui suit dans un fichier texte que tu renommes en
log.vbs
8<--- début ---------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile(WScript.Arguments(0), 8, True)
while Not WScript.StdIn.AtEndOfStream
logFile.WriteLine(Now & " : " & WScript.StdIn.ReadLine)
Wend
logFile.Close
8<--- fin -----------------------

Ensuite tu lances ton programme avec la commande suivante :

MonProg.exe | cscript log.vbs fichierLog.txt

Essaie déjà cela mais tu vas probablement avoir des problèmes de
codage. Il faudra probablement ensuite convertir le fichier obtenu
pour qu'il soit lisible avec bloc-note.
Pour cela : oem2ansi.vbs chez JC Bellamy
http://bellamyjc.org


Joli !
Il doit être aussi possible d'utiliser l'objet WshScriptExec pour lancer
monprog.exe et utiliser les flux stdout et stderr, suivant le même principe
?


Avatar
Fred
dans : news:,
jbongran écrivait :

Joli !
Il doit être aussi possible d'utiliser l'objet WshScriptExec pour
lancer monprog.exe et utiliser les flux stdout et stderr, suivant le
même principe ?


C'est fort possible, je n'y ai pas pensé sur le coup.
Cela permettrait un lancement du style : log.vbs monprog.exe log.txt
D'un autre côté, j'aimais bien l'idée du pipe, mais je ne pouvais le
lancer sans cscript :-(

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

1 2