Script PHP checksrv.php
Contrôle la disponibilité d’un serveur
Pré-requis sur l’utilisation de PHP en cron:
http://www.devarticles.com/c/a/PHP/PHP-CLI-and-Cron/
checksrv.php
#!/usr/bin/php -q
#WELCOME
#print « check_dispo.php »;
//Date
$today = date(‘d-m-Y’);
$today_us = date(‘m-d-Y’);
$today_timestamp = strtotime(date(‘Ymd’));
$days = array(« Monday », »Tuesday », »Wednesday », »Thursday », »Friday », »Saturday », »Sunday »);
$jours = array(« Lundi », »Mardi », »Mercredi », »Jeudi », »Vendredi », »Samedi », »Dimanche »);
$months = array(« January », »February », »March », »April », »May », »June », »July », »August », »September », »October », »November », »December »);
$mois = array(« Janvier », »Fevrier », »Mars », »Avril », »Mai », »Juin », »Juillet », »Aout », »Septembre », »Octobre », »Novembre », »Decembre »);
//Couleurs
function colorize($color,$string)
{
switch($color)
{
// INFOS COLORS
// ;40m <=> background dark
case « cyan »:
$out = « \033[36;40m".$string."\033[37m";
break;
case "red":
$out = "\033[31;40m".$string."\033[37m";
break;
case "red_bold":
$out = "\033[1;31;40m".$string."\033[0m";
break;
case "green":
$out = "\033[32;40m".$string."\033[37m";
break;
case "bggreen":
$out = "\033[42;30m".$string."\033[40;37m";
break;
}
return $out;
}
//MySQL
$MYSQL_HOST="********";
$MYSQL_USER="********";
$MYSQL_PASS="**********************";
$MYSQL_BDD="phpScheduleIt";
$link = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS)
or die(mysql_error());
mysql_select_db( $MYSQL_BDD ) or die( mysql_error() );
$usage = $_SERVER["argv"][1];
switch($usage)
{
case « –help »:
print « Usage: ./check_dispo.php [options] \n »;
print « –hostname [hostname]\n »;
print « –list : affiche toutes les machines definies dans phpScheduleIt\n »;
print « \n »;
print « Example: ./check_dispo –hostname thieli\n »;
exit();
break;
case « –hostname »:
$hostname = $_SERVER["argv"][2];
break;
case « –list »:
$query = « SELECT name FROM resources GROUP BY name ORDER BY name ASC »;
$results = mysql_query($query) or die(mysql_error());
print « \n »;
while ($row = mysql_fetch_array($results))
{
print $row[name]. »\n »;
}
print « \n »;
return 0;
break;
}
if(!$hostname)
{
$query = « SELECT * FROM reservations, resources WHERE reservations.machid = resources.machid AND reservations.start_date <= « .$today_timestamp. » AND reservations.end_date >= « .$today_timestamp ;
}
else
{
$query = « SELECT * FROM reservations, resources WHERE reservations.machid = resources.machid AND reservations.start_date <= « .$today_timestamp. » AND reservations.end_date >= « .$today_timestamp. » AND resources.name like ‘ ».$hostname. »‘ » ;
}
$results = mysql_query($query) or die(mysql_error());
//init de la variable de resultats
$have_results = false;
while ($row = mysql_fetch_array($results))
{
if($row['name']) print colorize(« red_bold », »$row[name]« ). »\t »;
if($row['start_date']&&$row['end_date'])
{
//date de fin en couleur rouge !
$end_date = gmdate(« l d F Y H:i », $row['end_date']);
$end_date = str_replace($days, $jours, $end_date); // jours US -> FR
$end_date = str_replace($months, $mois, $end_date); // mois US -> FR
print colorize(« red », »reserve jusqu’au $end_date »). »\n »;
}
if($row['location']) print « |- ».$row['location']. »\n »;
if($row['notes']) print « |- ».$row['notes']. »\n »;
if($row['summary']) print « |- ».$row['summary']. »\n »;
$resid = $row['resid'];
//print « resid= ».$resid. » | « ;
$query2 = « SELECT * FROM reservation_users, login WHERE reservation_users.memberid=login.memberid AND reservation_users.resid=\ »".$resid. »\ »";
$results2 = mysql_query ( $query2 ) or die ( mysql_error() );
while ( $row2 = mysql_fetch_array ( $results2 ) )
{
print « |- ».colorize(« cyan », »$row2[fname] $row2[lname] \t $row2[phone] \t $row2[email]« ). »\n »;
}
print « \n »;
$have_results = true;
}
//si pas de reservation de la machine
//obtenir le machinid à partir du hostname
if($have_results == false)
{
$query3 = « SELECT machid, name FROM resources WHERE name like ‘ ».$hostname. »‘ »;
$results3 = mysql_query($query3) or die (mysql_error());
while( $row3 = mysql_fetch_array($results3) )
{
$machid = $row3['machid'];
}
if($machid)
{
//construction du message pour une machine libre
$free_msg = « \n ».colorize(« bggreen », »$hostname »). »\n »;
$free_msg .= « Reserver cette machine en cliquant sur le lien suivant:\n »;
$free_msg .= colorize(« green », »http://hostname/phpScheduleIt/schedule.php?date= ».$today_us. »\n\n »);
exit($free_msg);
}
else
{
print » \nCette machine n’existe pas dans l’interface phpScheduleit\nPour ajouter la machine « .$hostname. » cliquez sur le lien suivant:\n »;
$url_add_srv = « http:// »; // URL à définir
print colorize(« green »,$url_add_srv. »\n\n »);
}
}
?>
.bash_profile
./checksrv.php –hostname hostname1



Ca manque de captures d’ecran !