Bruno-KS
20/04/2008, 19h42
Bonjour,
Voici un script (vite fait) qui effectue un reboot hard sur votre RPS si celui-ci est passé en read-only. Ce script est bien sur à exécuter sur une machine distante, pas sur le rps qu'on veut rebooter.
NB : je poste dans les how-to "serveur dédié" car ce script marcherait aussi sur un dédié, bien que celui-ci aie moins de chance de passer en read-only
Le code source du fichier hardRebootDoIfReadOnly.php :
A mettre en cron pour vérifier toutes les 10 minutes :
Voici un script (vite fait) qui effectue un reboot hard sur votre RPS si celui-ci est passé en read-only. Ce script est bien sur à exécuter sur une machine distante, pas sur le rps qu'on veut rebooter.
NB : je poste dans les how-to "serveur dédié" car ce script marcherait aussi sur un dédié, bien que celui-ci aie moins de chance de passer en read-only
Le code source du fichier hardRebootDoIfReadOnly.php :
Code PHP:
/* Ce script PHP teste l'état d'un serveur RPS et le reboot hard si nécessaire
Seul le read-only entraine le reboot hard */
############# debut de la partie configuration #############
// OBLIGATOIRE
$host = "rXXXXX.ovh.net" ; // le nom de la machine
$login_manager = "XXXXXX-ovh" ; // votre login du manager.....
$passwd_manager = "*******" ; // .... et son mot de passe associé
$mail = "" ; // l'email auquel recevoir l'alerte du reboot hard
// FACULTATIF
$reason = "OCO 398 Error read-only" ; // la raison du reboot hard
############# fin de la partie configuration ###############
// on commence par tester l'état du rps avec OCO
$test = shell_exec("telnet $host 79") ;
$result = explode("\n", $test) ;
$result = $result[3] ;
// on regarde la ligne contenant le code retour
$code = intval($result[0].$result[1].$result[2]) ;
if ($code == 398)
{ // le rps est KO, on le reboot hard
$soap = new SoapClient('http://www.ovh.com/soapi/ovh.wsdl');
//login
try {
$login = $login_manager;
$password = $passwd_manager ;
$session = $soap->login($login,$password,null);
echo "login successfull";
} catch(SoapFault $fault) {
echo "Error : ".$fault;
}
//dedicatedHardRebootDo
try {
$result = $soap->dedicatedHardRebootDo($session, $host, $reason, $mail, '');
echo "dedicatedHardRebootDo successfull";
} catch(SoapFault $fault) {
echo "Error : ".$fault;
}
//logout
try {
$result = $soap->logout($session);
echo "logout successfull";
} catch(SoapFault $fault) {
echo "Error : ".$fault;
}
}
?>
Code:
*/10 * * * * php /chemin/vers/le/script/hardRebootDoIfReadOnly.php