OVH Community, votre nouvel espace communautaire.

[HOW-TO] Hard reboot auto (rps)


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 :

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;
   }

}

?>
A mettre en cron pour vérifier toutes les 10 minutes :

Code:
*/10 * * * * php /chemin/vers/le/script/hardRebootDoIfReadOnly.php