|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | ||
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Oula effectivement, je me suis emmêlé les pinceaux.
Hum... Bon du coup on va copier l'historique parce que sinon je sais pas trop ce qu'on peut faire ou pas en VBS, Il faudrait qu'un expert vienne confirmer/corriger tout ça. Du coup t'as gagné, j'ai fait le script et je l'ai testé... Code :
Mais il reste plein d'incohérences et le script va piquer si jamais le fichier listant les machines ou si l'historique deviennent trop gros... |
||
|
|
00
|
|
|
#22 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
Merci encore pour ton implication mais ca ne finira jamais
Dans ma liste Liste_Machines.txt j'ai : toto titi Si je lance le script 2 fois, dans Histo_ping.txt, ca donne : toto OK --> OK titi NOK --> NOK Jusque la pas de problème ... Maintenant si je vide ma liste de machines et que je met : terre lune et que je relance le script, le contenu de mon fichier est maintenant : terre --> NOK lune --> NOK et je n'ai plus mes anciennes données ... Je souhaiterais que ca donne : toto OK --> OK titi NOK --> NOK terre --> NOK lune --> NOK Je vais devoir te payer une bouteille de champagne apres ... |
|
|
00
|
|
|
#23 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Ah ouais mais nan...
Si des machines disparaissent du fichier ListeMachine.txt ça va pas le faire... J'ai plus le temps de voir ça maintenant mais je peux te donner une piste de réflexion : 1 - D'abord tu boucles sur toutes les lignes de ton fichier Histo 2 - Pour chaque ligne, tu lis de quelle machine il s'agit 3 - Tu cherches cette machine dans le fichier ListMachine.txt 4 - Si tu la trouves, tu fais ton ping et écrit le résultat à la suite de l'historique de cette machine ET tu ajoutes le nom de la machine dans un tableau 5 - Si tu ne la trouve pas, alors tu écris l'historique de cette machine sans rien changer 6 - Une fois que tu as fini de lire le fichier Histo, tu boucles sur toutes les lignes du fichier ListeMachine.txt 7 - Pour chaque ligne, tu regardes si tu l'as déjà trouvée dans l'historique en bouclant sur toutes les entrées de ton tableau rempli dans l'action 4 8 - Si la machine N'EST PAS dans le tableau alors tu fais un ping et écris le résultat dans une nouvelle ligne. Ayé ! ![]() Sur ce, bon week-end. |
|
|
00
|
|
|
#24 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
super, merci !!!!
|
|
|
00
|
|
|
#25 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Bon alors, elle est où l'implémentation en VBScript qui fait marcher le bouzin ?
Fais signe si tu as des problèmes mais donne une preuve de ta bonne foi. Hé ouais, c'est lundi aujourd'hui... |
|
|
00
|
|
|
#26 | ||
|
Nouveau Membre du Club
![]() Technicien Help Desk Inscription : décembre 2012 Messages : 23 ![]() |
Salut !
Aniki, je ne suis pas tout à fait d'accord avec l'algo ci dessus. Je propose de faire l'inverse, comme tu l'avais préparé au début : 1-D'abord, une boucle sur les noms de machines 2-Ensuite, préparation du résultat du ping (OK/NOK) dans une variable 3-Puis boucle sur l'historique pour chercher si le nom existe déjà 3a-Si le nom est trouvé, mise à jour de la ligne par la variable du résultat du ping 4-Si le nom n'est pas trouvé, ajout d'une ligne à l'historique avec la variable du résultat du ping 5-Puisque je ne sais pas modifier une ligne spécifique dans un fichier texte sans parcourir (encore et encore) le fichier, je triche en plaçant le contenu du fichier historique dans une chaîne que je met à jour au moment voulu (3a ou 4), je supprime le fichier historique et je le recrée avec la chaîne contenant l'historique. En code, ça donne : Code :
Et les lignes de l'historique concernant une machine sur laquelle il n'y a pas de tentative de Ping ne sont pas modifiées. (Ouais, je donne une réponse, j'suis comme-ça, mwa.) |
||
|
|
00
|
|
|
#27 | |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Citation:
Très bien, un autre point de vue ça ne peut qu'être positif ! Effectivement ton code a certains avantage mais comme tu l'as dit toi-même, selon le contexte, ça peut être un peu trop lourd. Et là, c'est à b.gaumard de voir ce qui lui convient le mieux. Il pourrait commencer par nous le donner le contexte ! (la liste de machine change-t-elle souvent ? Les machines sont dans le désordre ? Le fichier historique doit être trié par nom de machine ? par date du premier ping ? Combien de fois par jour est éxecuté le script ? etc... Sinon, il y a quelques erreurs dans le script (manque un Then, des .Close sur des objets qui ne le supportent pas) mais rien de bien méchant. b.gaumard devrait pouvoir s'en sortir. Ca, c'est à chacun de voir comment il interprète "aider quelqu'un". |
|
|
|
00
|
|
|
#28 | |
|
Nouveau Membre du Club
![]() Technicien Help Desk Inscription : décembre 2012 Messages : 23 ![]() |
Citation:
Je pensais que le .Close pouvait être appliqué sur tous les éléments de type objet. Ça aurait été pratique. Concernant la situation, des éléments de réponse sont déjà disponibles : - La liste des machines semble pouvoir varier (titi/toto/tata vs lune/terre/mars) - Puisque ça change, j'pense que l'ordre des machines ne doit pas impacter le code Il manque par-contre l'indication si les machines non-pingées doivent être mises à jour quand-même, car dans ce cas, partir du fichier historique (en boucle principale) pour vérifier si le nom de la machine est à tester me semble plus efficace, donc il vaudrait mieux partir sur l'algo de Aniki dans ce cas. ^^ |
|
|
|
00
|
|
|
#29 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
M'enfin ça serait quand même pas mal de savoir si le fichier historique risque d'avoir des dixaines de milliers de lignes très courtes ou bien le contraire, c-a-d pas beaucoup de lignes (pas beaucoup de nouvelles machines) mais des lignes de quelques kilomètres de long (20 ping par jour)...
Histoire de savoir si ca vaut le coup de boucler plusieurs fois sur tout le contenu de l'historique ou bien s'il faut vraiment lire toute la ligne, etc... |
|
|
00
|
|
|
#30 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
Bonjour,
Le contexte ... En fait je réalise un export de mon DHCP, que je met en page au format html. (Scopes, ip utilisées, ip libres, etc). Cet export est réalisé chaque jour à 10h00. Pour chaque scope, j'ai des @ip attribuées automatiquement, et des @ip réservées manuellement, c'est le principe du DHCP Les @ip qui ont un statut "reservation manuelle", "NEVER_EXPIRES" sont extraites dans un fichier texte et je fais un ping dessus chaque jour et je réalise un historique sur 15 jours. Si une réservation est inactive depuis 15 jours elle sera supprimée automatiquement. Donc la liste est aménée à changer chaque jour. Théoriquement les machines sont dans le meme ordre, mais des nouvelles machines peuvent se glisser dans la liste, des machines peuvent disparaitre de la liste, c'ezst complètement aléatoire. Pour le fichier historique il n'y a pas d'ordre particulier, c'est juste que si la machine est deja présente dedans, il faut ajouter le status du ping à l'historique (OK ou KO). Si la machine n'existe pas, création d'une nouvelle ligne avec status ping. ex : SRV1 OK OK OK OK KO OK OK KO OK SRV2 KO OK OK KO OK KO OK OK OK SRV3 (new) OK Le fichier sera ensuite mis en page en html .... Merci en tout cas pour votre aide, une fois terminé, le script sera ajouté dans les contributions, car il peu servir. |
|
|
00
|
|
|
#31 |
|
Nouveau Membre du Club
![]() Technicien Help Desk Inscription : décembre 2012 Messages : 23 ![]() |
As-tu essayé une solution proposée dans un post ci-dessus ?
Je corrige les quelques erreurs qui pourraient traîner. |
|
|
00
|
|
|
#32 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
oui, avant j'essaye de corriger 2-3 choses à la ligne 51 jai :
Cet objet ne gère pas cette propriété ou cette méthode: 'ficHistorique_op' Merci encore pour ton aide. |
|
|
00
|
|
|
#33 |
|
Nouveau Membre du Club
![]() Technicien Help Desk Inscription : décembre 2012 Messages : 23 ![]() |
Lorsque tu as cette erreur, c'est que l'option ".Close" n'est pas gérée par l'objet ciblé.
Remplace les lignes type objet.Close par set objet=Nothing. |
|
|
00
|
|
|
#34 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
Je vais regarder ceta apres midi jai pas mal d'erreurs ... Je ne sais pas si tu as eu l'occasion de le tester sur ta machine
Merci. |
|
|
00
|
|
|
#35 |
|
Nouveau Membre du Club
![]() Technicien Help Desk Inscription : décembre 2012 Messages : 23 ![]() |
Il y avait en effet pas mal d'erreurs (3 ou 4), voici les principales que tu pourrais corriger :
- Il faut déclarer ficMachines et ficHistorique, donc commencer le script par Dim ficMachines, ficHistorique- Il manquait 1 ou 2 "Set" pour ouvrir les fichiers - Suppression du dernier ".Close" qui traînait - Petit détail sur la fonction d'écriture du fichier d'historique, il fallait utiliser ficHistorique_op.WriteLine ficHistorique_str |
|
|
00
|
|
|
#36 | |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
ca à l'air d'etre top merci !!!!!!
Juste une toute petite chose ... Si je mets 2 ip qui se resemblent : 10.208.24.11 10.208.24.111 10.208.24.112 10.208.24.113 10.208.24.114 Il y a un problème dans le résultat : Citation:
10.208.24.111 NOK --> OK --> NOK 10.208.24.112 NOK --> OK --> NOK 10.208.24.113 OK --> OK --> OK 10.208.24.114 OK --> OK --> OK 10.208.24.152 OK --> OK --> OK Une idée ?? Merci encore pour ton implication. On approche du but ultime, merci. |
|
|
|
00
|
|
|
#37 |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Ca vient du fait que le nom de la machine n'est plus lu entierement.
On ne cherche plus qu'à savoir si les n premiers caractères de la ligne de l'historique sont les même que ceux de la machine recherchée où n est le nombre de caractères contenus dans machine : |
|
|
00
|
|
|
#38 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
hummm ... au lieu de mettre "-->" je vais mettre "@" comme séparateur.
Ce qui va donner dna smon historique : 10.208.24.11@OK@OK 10.208.24.12@OK 10.208.24.111@NOK Si je remplace : LigneLeft = Left(Ligne, MachineLen) Par un : Tbl2 = Split(Ligne, "@") LigneLeft = Tbl2(0) ca devrait le faire non ? |
|
|
00
|
|
|
#39 | |
|
Membre émérite
![]() Inscription : juin 2006 Messages : 632 ![]() |
Oui, ça le ferait mais ça ferait aussi pas mal de boulot inutile pour le processeur selon le nombre de @ contenu dans ta ligne.
Mais si tu ne veux lire que le nom de la machine alors pourquoi n'utilises-tu pas le séparateur qui est justement là pour séparé le nom de la machine des résultats des pings ? Indice : Dans mon précédant post, j'ai fait exprès de prendre cette tournure de phrase : Citation:
C'est comme une chasse au trésor ! |
|
|
|
00
|
|
|
#40 |
|
Membre du Club
![]() Ingénieur systèmes et réseaux Inscription : juillet 2012 Messages : 166 ![]() |
je vais regarder les precedents post alors ... merci
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com