Page 1 sur 1

[..] Récupération d'un flux de sortie

Posté : ven. 04 mars 2011 16:17
par lokidor
Bonjour, c'est encore moi. Étant donné que le projet avec la fonction récursive n'avance pas, je fait autre chose.

En gros, c'est de l'archivage de log. Pour le moment j'en suis à extraire un fichier de log en .gz afin de vérifier de checksum.
Le soucis c'est que le checksum se vérifie à l'aide d'un outils appelé cksum.exe, ça ok, pas de problème à l'utilisation, mais je ne parviens pas a rediriger le flux de sortie. J'ai bien trouvé quelque chose sur le forum anglophone, mais ça marcha pas.... comme on dit chez moi :/

Code : Tout sélectionner

#Include <Array.au3>
#Include <File.au3>
#Include <Date.au3>
#include <Constants.au3>

$res=""
$path="****\Securite\Archivage FW"

$list_gz=_FileListToArray($path,"*.gz")

;~ _ArrayDisplay($list_gz)

For $cpt=1 to $list_gz[0]

    ;on copie les fichiers gz dans un rep à part
    FileCopy ( "..\"&$list_gz[$cpt], $path&"\DezipFile\"&$list_gz[$cpt],8 )

    ;on décompresse
    Run("..\Tools\gunzip.exe -f -N ..\DezipFile\"&$list_gz[$cpt])

    ;Et là on vérifie le checksum. La commande passe mais pas moyen de récupérer la sortie.
    $res_handler=Run("..\Tools\cksum.exe "&$list_gz[$cpt]&" >> "&$path&"\DezipFile\_check_Log.txt",@SW_MINIMIZE, $STDOUT_CHILD + $STDERR_CHILD)

    $res = StdoutRead($res_handler)

;~  MsgBox(64,"test",$res)
Next
 
Je me suis aidé de ce post : http://www.autoitscript.com/forum/topic ... _p__446624

Si quelqu'un sait quoi faire ou a trouvé un post...(rien trouvé sur ce forum ><')

Bien merci d'avance et Bon WE à tous!!!

Re: [..] Récupération d'un flux de sortie

Posté : ven. 04 mars 2011 20:21
par Tlem
J'ai cherché (sur les trois ou quatre première page de notre ami) sans trouver, à télécharger le programme cksum.exe.
A première vue, je dirait qu'il s'agit d'un programme qui calcul le MD5 d'un fichier.

Si ma conclusion est exacte, alors il existe déjà du matos pour AutoIt.
Une petite recherche vous donnera le code d'un UDF permettant cela.

Re: [..] Récupération d'un flux de sortie

Posté : ven. 04 mars 2011 21:56
par sylvanie
;Et là on vérifie le checksum. La commande passe mais pas moyen de récupérer la sortie.
$res_handler=Run("..\Tools\cksum.exe "&$list_gz[$cpt]&" >> "&$path&"\DezipFile\_check_Log.txt",@SW_MINIMIZE, $STDOUT_CHILD + $STDERR_CHILD)

$res = StdoutRead($res_handler)
La sortie est déjà redirigée dans un fichier, au mieux vous pouvez récupérer la sortie erreur.

Maintenant, si on enlève la redirection fichier, il faut boucler sur la lecture tant que le run n'est pas fini :

Code : Tout sélectionner

 ;Et là on vérifie le checksum. La commande passe mais pas moyen de récupérer la sortie.
    $res_handler=Run("..\Tools\cksum.exe "&$list_gz[$cpt],@SW_MINIMIZE, $STDOUT_CHILD + $STDERR_CHILD)

    $res = StdoutRead($res_handler)
 $res =""
While 1
    $res&= StdoutRead($res_handler)&@crlf
    If @error Then ExitLoop
Wend

 MsgBox(0, "STDOUT read:", $res)
 

Re: [..] Récupération d'un flux de sortie

Posté : ven. 04 mars 2011 23:56
par Tlem
Même si c'est juste, l'utilisation d'un outil externe lorsque cela n'est pas nécessaire, n'est pas forcement un bon choix sur la pérennité du script. :roll:

Re: [..] Récupération d'un flux de sortie

Posté : lun. 11 avr. 2011 17:25
par lokidor
Après un période passé sur les bancs de l'école me revoilou :)

Merci pour vos réponses durant mon abscence. Il faut que je vérifie que c'est bien du md5 avant d'utiliser un outils interne :) mais merci du conseil Tlem.

Au pire si c'est un checksum maison ben... j'aviserais avec la solution de Sylvanie.

Sur ce bonne soirée et surement à demain.