Comme vous avez pu le deviner en lisant cet article j’ai quelques soucis avec un serveur dédié chez un Hebergeur.
Le problême est que ce serveur est celui sur lequel est installé une application d’un client.
Le problème est le suivant :
Le serveur s’arréte brutalement sans laissser de trace dans les logs et ne peut être redémarré que depuis l’interface d’administration fournie par l’hebergeur
Dans un premier temps on a souhaité faire de la veille pour savoir pourquoi le serveur plantait. Mais sachant que le serveur ne plante que tous les mois, cela se révéle un peu difficile.
Pour le moment on souhaite rester pour des raisons techniques chez cet hebegeur mais le serveur ne doit pas rester planter toute une nuit, voir une matinée en plus.
La solution :
créer un robot qui va se logger et redémarrer le serveur s’il est planté
Afin de mettre en place ce système, j’ai bien sûre utilisé le script que j’avais fait sous Talend comme base.
voilà ce que j’avais comme script de base :
Comme vous pouvez le voir ce script est assez simple, il m’envoit un mail si le serveur est down.
Dans un second temps je me suis dit qu’il fallait que je puisse être prévenu à n’importe quel moment, d’où l’idée d’utiliser une alerte par sms en plus, grâce au nouveau composant (tSendSMS) que j’ai créé et qui est dispo ici
Ce qui me donne un job de ce style :
Mais vous me direz que pour l’instant cela reste de la surveillance!!!
C’est à ce moment précis que le python rentre en jeu. J’ai utilisé la bibliothèque IEC qui sert à commander IE par un script, vous pourrez la trouver facilement chez mayukh bose
Donc pour me connecter j’ai fait un simple petit script qui ressemble à ça :
import IEC
ie = IEC.IEController() # Create a new IE Window.
ie.Navigate('URL HEBERGEUR') # Navigate to a website.
ie.PollWhileBusy()
ie.SetInputValue('login.user', 'MONLOGIN') # Fill in the search box.
ie.PollWhileBusy()
ie.SetInputValue('login.pass', 'MONMDP') # Click on the search button.
ie.PollWhileBusy()
ie.ClickButton(name='__SBMT:d0e265d0:')
ie.PollWhileBusy()
ie.ClickLink('Outil de restauration')
ie.PollWhileBusy()
ie.SetCheckBoxState('recoveryChoice.Reset')
ie.PollWhileBusy()
ie.ClickButton(name='__SBMT:d0e1193d0:')
ie.PollWhileBusy()
ie.ClickButton(name='__SBMT:d0e1018d0:')
ie.PollWhileBusy()
ie.CloseWindow()
Il est important de noter qu’il faut trouver le nom de chaque champ à remplir ainsi que le nom des boutons, en affichant le code source de la page, cette étape est parfois un peu laborieuse.
Ensuite j’ai créé un .bat qui se tient en une seule ligne :
c:/python25/python.exe c:/test/Monscript.py
Donc dans Talend je rajoute l’appel du .bat, puis je vérifie que le serveur est bien lancé et je m’envoi un sms pour me le dire, si le redémarrage ne marche pas, au bout de la 5° tentative je m’envois un nouveau sms pour me dire que le redémarrage a échoué, ce qui me donne un Job comme celui ci :
Je me tiens à votre disposition pour toutes vos questions
dernières cueillettes