Question [Resolu]surveiller un exe si il crash

Plus d'informations
il y a 11 ans 1 mois #19423 par Gabriel
bonjour a tous

j'ai un qui surveille les entrées oracle dans un fichier tnsname.ora (fichier de definition des connection a une bdd oracle)

pour cela j'utilise tnsping.exe, utilitaire fournit par oracle, qui permet de proceder a un test d'une entree.

Exemple tnsping.exe baseOracletoto1

si le fichier tnsnames.ora configuré sur le pc a l'entrée il essaie de le resoudre. si l'entree ne si' trouve pas il signale un \"not resolvable\".

mon probleme c'est que le tnsping.exe de temps en temps crash totalement (avec le popup dans Windows \"tnsping.exe s'est arrété pour une raison inconnue\")

dans mon script je l'appelle avec (script version simplifié :) ):
[code:1]
$tnsping = \"c:\program files\oracle\bin\tnsping.exe\"
$listeEntrees = get-content bases.txt

foreach ($entree in $listeEntrees){
$resultat = & $tnsping $entree
if ($resultat -match \"not resolvable\"«»){
$entree + \" OK\" | add-content .\résultats.log
} else {
$entree + \" NOK\" | add-content .\résultats.log
}
}
[/code:1]

Bon je pourrais tester le fait que resultat est simplement vide (si tnsping.exe crashe la sortie en cmd est vide), mais:
1/ ca veut dire que je doit traiter l'ensemble des résultats différents
2/ tant que personne n'a pas cliquer sur le OK du bouton de la popup crash, la boucle reste bloqué...

donc je me disais si il existait une petite commande qui lance l'appli et qu'on surveille ce serait cool.

le try and catch ne fonctionne pas (le process eclate avant de renvoer quoique ce soit...)

une idée ? :)<br><br>Message édité par: tonic8, à: 8/04/15 16:02

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 1 mois #19424 par xyz
Réponse de xyz sur le sujet Re:surveiller un exe si il crash
Salut,
tonic8 écrit:

j'ai un qui surveille

Un quoi ?
Sous quel OS et version de PS ?
tonic8 écrit:

tant que personne n'a pas cliquer sur le OK du bouton de la popup crash, la boucle reste bloqué

Connais-tu le nom du process gérant cette fenêtre ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 1 mois #19429 par Arnaud Petitjean
Salut Tonic8 ça faisait un bail ! ;)

Pas évident ton souci... Moi instinctivement j'essaierai de créer un job (invoke-command -asjob ou avec start-job) pour chaque appel de la commande et peut-être que l'état du job te permettra de savoir si ton utilitaire a bien fonctionné ou pas.

Sinon as tu essayé de tester le code de retour de la variable automatique $LASTEXITCODE après son exécution ? Si tout s'est bien passé le code de retour DOIT être la valeur zéro.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 1 mois #19434 par Gabriel
Réponse de Gabriel sur le sujet Re:surveiller un exe si il crash
taper trop rapidement mon message:blush:

je disais j'ai un script qui surveille les entrées oracle dans le fichier tnsnames.ora global.

desolé Laurent

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 1 mois #19435 par Gabriel
Réponse de Gabriel sur le sujet Re:surveiller un exe si il crash
bonjour Arnaud

en fait je penses qu'il faut que je decoupe mon pb en 2:

  • gerer le resultat du crash
    gerer le crash lui-meme
  • 1/ gerer le resultat du crash
    le tnsping.exe est un binaire qui sort un resultat dans la console. De ce resultat en fonction du texte qu'il sort j'evalue si c'est bon ou pas bon.
    * \&quot;not resolvable\&quot; = pas bon
    * si autre chose = bon

    le $lastexit, lui donne ça:
    * \&quot;not resolvable\&quot; = 1
    * non joignable = 1
    * joignable = 0

    Grosso modo le tnsping test l'entree dans le fichier global et en plus il test la connectivité.

    Ce qui m'interesse c'est la coté resolvable. Il s'agit de surveiller les agissement de ces mechants DBA qui créé des bdd, mais qui ne demandent pas (pour de bonnes ou mauvaises raisons) que les entrees soient mise a jour dans le fichier global.

    Par contre ils exportent une liste des entrees en un seul endroit (plusieurs équipes DBA qui font ce qu'ils veulent chacun de leur coté).

    donc quand une bdd n'est pas resolvable je les previens, les rappelle a l'ordre...

    le pb de connectivité est different, certaines bdd sont en dmz non joignable pour moi.

    Donc si le tnsping crash, le $lastexit devrait etre au mieux à 1 au pire vide...
    * comment m'assurer que la valeur du lastexit correspond bien a la sortie de mon tnsping et pas d'une autre commande precedente?

    2/ surveiller la fenetre popup et la killer car le script attend quelle soit fermer pour passer al a boucle suivante
    si je fais un start-job je peux lui mettre un timing? chaque tnsping prend entre 8-20s, si je dis au bout de 60s arrete la tache (donc kill du process et des enfants lancé dans le startjob) en retournant une erreur, je peux traiter.

    evidement c'est aleatoire :), la meme entrée peut passer sans pb pendant 17 tentative et pouf casser ensuite

    Connexion ou Créer un compte pour participer à la conversation.

    Plus d'informations
    il y a 11 ans 1 mois #19436 par Gabriel
    Réponse de Gabriel sur le sujet Re:surveiller un exe si il crash
    Bonjour Arnaud,

    yep long time, j'ai pas eu beaucoup de temps.

    dis, peut etre que je trouverais la reponses dans le livre que j'ai commandé \&quot;Windows PowerShell - Fonctionnalités avancées\&quot;, tu sais si les auteurs en parles ;) ?

    Connexion ou Créer un compte pour participer à la conversation.

    Temps de génération de la page : 0.046 secondes
    Propulsé par Kunena