Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Ce sujet est verrouillé; vous ne pouvez pas éditer les messages ou faire de réponses. Page 1 sur 2
Aller à la page: 1, 2  >
condition et GOTO
Auteur Message
Répondre en citant
Message condition et GOTO 
bonjour a tous,
je souhaite faire un batch qui extrait des évènements système
tris ceux qui m'intéressent
et s'il les trouvent m'envoie un mail.

voila ou j'en suis pouvez vous m'aider a finir Sad

echo extraction des log system...
dumpel.exe -f eventtout.txt -s %logonserver% -l system

echo on tri l'ID voulu (36) et on créer le log.txt
type eventtout.txt | find " 36 " >log.txt

il me manque le truc genre:
si dans le log.txt il y a " 36 " goto mail
sinon goto end



:mail
blat -install smtp.aliceadsl.fr eventlog@toto.com
blat log.txt -to toto@gmail.com -subject "ID 36"

:end
exit


merci a vous



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message condition et GOTO 
Bonjour
d apres ce que j'ai compris tu crée ton log uniquement si il y a (36) donc obligatoirement il sera envoyé.

dans ta boucle il faut juste rajouter un if exist si j'ai bien compris

un truc du genre

Citation:
for /f "tokens=? delims=?" %%a in ('type eventtout.txt | find " 36 "') do (
if exist %%a=36 echo %%a >> log.txt & blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "ID 36" else ( goto :end)
)

:end
@exit


cette ligne n'est pas necessaire : blat -install smtp.aliceadsl.fr eventlog@toto.com
il est tout à fait possible de mettre le tout dans la commande blat



Dernière édition par Laddy le Ven 3 Avr 2009 - 07:51; édité 3 fois

______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message condition et GOTO 
Bonjour,

Fais vite fais ce matin:

Citation:
echo Extraction des logs système...
dumpel.exe -f eventtout.txt -s %logonserver% -l system

echo Tri l'ID voulu (36) et on créer le log.txt
For /f "tokens=*" %%a in ('type eventtout.txt ^| find "36"') do (
goto mail)

goto end

:mail
blat -install smtp.aliceadsl.fr eventlog@toto.com
blat log.txt -to toto@gmail.com -subject "ID 36"

:end
exit





______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message condition et GOTO 
Ouaou merci a vous!
quel rapidité c'est vraiment agréable pour moi qui galere avec BATCH.
je n'ai pu encore pu tester de la ou j'ecris en ce moment mais ca m'avance deja mentalement Okay

l'idée par la suite est de pouvoir choisir (en repérant les chaines de caractère qui vont bien) un ou plusieurs ID.
Le truc est que lorsque l'on met le résultat d'un type + find dans une variable , il me semble ne qu'il prend que le dernier résultat non ?

je me demande si c'est pas plus facile pour faire des modif par la suite de :
recuperer ds eventtout.txt les lignes contenant les chaines de caractere qui m'interressent les mettre ds le log.txt ( ne pas créer le log.txt si y'a pas ces chaines)
puis verifier que le log.txt existe et au quel cas envoyé le mail (merci pour l'astuce ds blat Okay c'est cool ca !! )

est ce que ca vous parait viable?

en fait c'est pour pouvoir mettre l'ID 36, ou l'ID 36 et plein d'autre... ( je dit ca car le ^| c'est de l'exclusif d'apres ce que j'ai pu lire ..?)

En tout cas c'est un forum peuplé de gens ma fois serviable ... vraiment
c'est presque genant Embarassed

Bonne journée.



Répondre en citant
Message condition et GOTO 
J'ai pas compris en fait

dans une boucle for il va chercher toutes les lignes contenant le 36 si il existe d'après mon exemple.

mais tu peux faire ainsi :

type eventtout.txt ^| find "36 38 46 45 65" ....

sinon dans ma theorie difficile de voir sans le rapport eventtout.txt


Code non testé


for /f "tokens=? delims=?" %%a in ('type eventtout.txt | find "36 40 45 52 32"') do (
if %%a EQU 36 echo %%a >> log36.txt & blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "ID 36"
if %%a EQU 40 echo %%a >> log40.txt & blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "ID 40"
.....
)
else ( goto :end)


:end
@exit




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message condition et GOTO 
Bonjour !

Laddy Okay

Je suppose que ce code te vas ( enfin j'en sais rien lol )

Citation:
@echo off

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Findstr "34 35 36 37"') do (
echo %%a >> log.txt)

if exist log.txt goto mail

goto end

:mail

blat -install smtp.aliceadsl.fr eventlog@toto.com
blat log.txt -to toto@gmail.com -subject "ID 36"
IF %ERRORLEVEL%==1 echo Envoyé
IF %ERRORLEVEL%==0 echo Erreur

:end

pause


Batch_Man




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message condition et GOTO 
Hello,
encore merci pour votre aide Batch man et Laddy !!!
en effet j'opterai pour le dernier code qui semble plus simple à mes yeux.
cela arrive a faire quasiment ce que je voudrais.

Pour info voici a quoi ressemble un rapport eventtout.txt: (j'ai enlever la fin des ligne pour plus de lisibilité)

4/28/2008 14:37:11 4 0 7035 Service Control Manager AUTORITE NT\SYSTEM
4/28/2008 14:37:11 4 0 7036 Service Control Manager N/A PC-01 Le service Service de la passerelle de la couche Applicat
4/28/2008 14:38:10 4 8 18 Windows Update Agent N/A PC-01 mardi 29 avril 2008 03:00 - Outil de
4/28/2008 14:41:14 4 8 18 Windows Update Agent N/A PC-01 mardi 29 avril 2008 03:00 - Mise à jour de sécu
4/28/2008 14:51:06 2 0 14 W32Time N/A PC-01 Le fournisseur de temps NtpClient n'a pas pu trouver un c
4/28/2008 14:51:06 1 0 29 W32Time N/A PC-01 Le fournisseur de temps NtpClient est configuré pour acquér
4/28/2008 15:16:36 4 0 4377 NtServicePack AUTORITE NT\SYSTEM PC-01 Le correctif Windows XP KB94
4/28/2008 15:16:36 4 8 19 Windows Update Agent N/A PC-01 Mise à jour de sécurité pour Windows XP (KB945553)


si je met ce code ( qui servira donc a retrouvé les ligne comportant *4 0 7036 Service Control Manager*

@echo off
echo extraction des log system...
dumpel.exe -f eventtout.txt -s %logonserver% -l system

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Findstr "*4 0 7036 Service Control Manager*"') do (
echo %%a > log.txt)

if exist log.txt goto mail



plusieurs chose:
1° ma recherche avec la chaine de caratere est aléaoire: sur certaine ID ca retrouve la bonne et parfois ca trouve completement autre chose...?
auriez vous une astuce pour être sur de retrouvé une chaine? y'a pas une histoire avec les delims ?

2° le log.txt ne contient qu'une ligne, or il y en a plusieurs... comment les avoir toutes?
Et même mieux, seulement celle qui datent de moins d'une semaine par ex?

3° et pour aller plus loin ds le meme esprit la même chose mais avec plusieurs chaine?
je doit pouvoir mettre plusieurs "for" avec un >>log.txt mais si on peux faire autrement ...


Quelle idée de vouloir faire ca franchement Laughing


Bon WE



Répondre en citant
Message condition et GOTO 
j'ai repris un des sujet consernant la modif d'une playlist m3u en .spl
il y ete question de la commande switch (bien pratique)
je m'en suis servis pour remplacer tous les espace par des "-" et ensuite j'ai recherche une chaine type:

-4-0-7035-Service-Control-Manager

mais c'est bizzare ca ne marche pas tout le temps
j'ai l'impression que le find me ressort les 4 , les 0 etc quel que soit leur emplacement ( comme ds l'heure et la date par ex)
ducoup il tri de tout et du n'importe quoi

c'était le petit ajout du soir

++



Répondre en citant
Message condition et GOTO 
Bonsoir,

Dans ce cas au lieu d'utiliser FINDSTR tu utilises juste FIND

Batch_Man




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message condition et GOTO 
bien vu find tout court marche mieu ds mon cas Very Happy

alors avec cela c'est quasiment le bon :

@echo off

echo extraction des log system...
dumpel.exe -f eventtout.txt -s %logonserver% -l system

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Find " 36 "') do (
echo %%a >> log.txt)

if exist log.txt goto mail

exit

:mail
blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "log"

move log.txt old
ren old\log.txt log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log



Maintenant comment mettre plusieur chaine ici:
For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Find " 36 "') do (
echo %%a >> log.txt)

mettre un espace entre 36 et34 ne marche pas meme avec les ""
suis je obligé de faire plusieurs for?

Et enfin puis je repérer la date qui se trouve au debut de eventtout.txt et et supprimer tout ce qui date de plus de X jours?

c'est la fin manque plus grand chose. Mr. Green
Encore merci pour votre temps et votre aimabilité
c'est jusque là du perfect Okay
encore merci



Répondre en citant
Message condition et GOTO 
tu ne dois pas mettre un espace entre le " et le chiffre

find "36 40"
comment apparaissent ses fichiers dans le rapport ??
peut etre qu'un "tokens=* delims= " resouderait le problème




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message condition et GOTO 
je mettais des espace pour qu'il ne me prenne pas une ligne ds laquelle apparaissait 36 ds l'heure par ex.
voici a quoi ressemble un rapport eventtout.txt: (j'ai enlever la fin des ligne pour plus de lisibilité)

4/28/2008 14:37:11 4 0 7035 Service Control Manager AUTORITE NT\SYSTEM
4/28/2008 14:37:11 4 0 7036 Service Control Manager N/A PC-01 Le service Service de la passerelle de la couche Applicat
4/28/2008 14:38:10 4 8 18 Windows Update Agent N/A PC-01 mardi 29 avril 2008 03:00 - Outil de
4/28/2008 14:41:14 4 8 18 Windows Update Agent N/A PC-01 mardi 29 avril 2008 03:00 - Mise à jour de sécu
4/28/2008 14:51:06 2 0 14 W32Time N/A PC-01 Le fournisseur de temps NtpClient n'a pas pu trouver un c
4/28/2008 14:51:06 1 0 29 W32Time N/A PC-01 Le fournisseur de temps NtpClient est configuré pour acquér
4/28/2008 15:16:36 4 0 4377 NtServicePack AUTORITE NT\SYSTEM PC-01 Le correctif Windows XP KB94
4/28/2008 15:16:36 4 8 19 Windows Update Agent N/A PC-01 Mise à jour de sécurité pour Windows XP (KB945553)

du coup comment avoir les ID 7035 et 18 et 29 par exemple?
pour info les espaces entre le champs sont des grands espaces comme des tabulations ( je ne sais pas si c'est traité différemment des espaces)

en fait je vais recherhcer cela: sur 3 champs le 1er c'est le severity ( info, warn, error) le 2eme je sais plus et le 3eme l'ID
en l'occurence:
4 0 7035

4 8 18

1 0 29

avec les chose comme demils et token je peux aussi selectionner en fonction des champs date ou heures?

Merci



Répondre en citant
Message condition et GOTO 
Bonjour,

Un truc dans le genre:

Citation:
@echo off

echo extraction des log system...
dumpel.exe -f eventtout.txt -s %logonserver% -l system
For %%a in (" 36 " " 37 " " 38 ") do (
For /f "tokens=*" %%i in ('TYPE "eventtout.txt" ^| Find %%a') do (
echo %%i >> log.txt)
)

if exist log.txt goto mail

exit

:mail
blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "log"

move log.txt old
ren old\log.txt log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log


Batch_Man




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message condition et GOTO 
bah je suis pas assez calé pour savoir comment ça doit marcher mais j'ai tjoujours un message type
"Le processus a tenté d'écrire sur un canal inexistant."
alors je ne sais pas ce que ca veux dire Rolling Eyes

a plus



Répondre en citant
Message condition et GOTO 
Re bonjour,

voila avec ce code ( du coup je mets plusieurs for tant pis je ne vais pas m'entêter si cela marche Okay )

@echo off

echo extraction des log system...
dumpel.exe -f eventtout.txt -s %logonserver% -l system

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Find " 34 "') do (
echo %%a >> log.txt)

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Find " 7036 "') do (
echo %%a >> log.txt)

For /f "tokens=*" %%a in ('TYPE "eventtout.txt" ^| Find " 6006 "') do (
echo %%a >> log.txt)

if exist log.txt goto mail

exit

:mail
blat log.txt -s smtp.aliceadsl.fr -f eventlog@toto.com -to toto@gmail.com -subject "log"

move log.txt old
ren old\log.txt log-%date:~0,2%-%date:~3,2%-%date:~6,4%.log



Le resultat me donne ca


2/3/2009 20:37:54 4 0 34 VMnetAdapter N/
...
4/6/2009 09:01:32 4 0 34 VMnetAdapter N/A COOL
2/3/2009 10:07:56 4 0 7036 Service Control Manager N/A COOL
...
4/6/2009 09:07:31 4 0 7036 Service Control Manager .....
2/3/2009 10:22:00 4 0 6006 EventLog.....
...
4/5/2009 17:56:48 4 0 6006 EventLog N/A COO


donc du plus vieux ID 34 au plus recent ID 34
puis le plus vieux ID 7036 au plus recent ID 7036
etc...

les date ont un drole de format: j'ai bien l'impression qu'elle sont passer en anglais.
Bref tout est casiment bon

Pensez vous q'uil soit preferable d'ouvrir un autr sujet pou pour tri par date ?

a plus
encore merci pour tous vos précieux conseils



Message condition et GOTO 


Montrer les messages depuis:
Ce sujet est verrouillé; vous ne pouvez pas éditer les messages ou faire de réponses. Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch