Manchmal muss man auch mal die Disk durch einen einfachen HTTP request abfragen. Warum also nicht bestehende Scripte, wie das Nagios Plugin check_disk dafür verwenden. Anbei ein kleines Script, dass genau dieses macht. Eine kleine Einschränkung, der HTTP Response Code ist bei Warning und Critial der gleiche – natürlich leicht zu erweitern ;)
<?php
// global binary
$NAGIOS_DISK = "/usr/lib/nagios/plugins/check_disk";
$DISK_KEY = "Uvg2kFMfy3DU";
if (isset($_GET['key'], $_GET['w'], $_GET['c'])) {
// okay
$key = $_GET['key'];
$warning = $_GET['w'];
$critical = $_GET['c'];
if(! (preg_match('/^[0-9]+%$/', $warning) && preg_match('/^[0-9]+%$/', $critical)) ) {
echo "Critical or Warning values are not a valid value.\n";
header("HTTP/1.0 510 Not Extended");
exit;
}
if ($key == $DISK_KEY ) {
// correct key
$return = shell_exec("$NAGIOS_DISK -l -x /dev/shm -w $warning -c $critical");
if (stripos($return,"OK")) {
print "$return\n";
header("HTTP/1.0 200 Okay");
} else {
print "$return\n";
header("HTTP/1.0 507 Insufficient Storage");
}
} else {
print "ERROR\n";
header("HTTP/1.0 401 Unauthorized");
}
} else {
// error
print "ERROR\n";
header("HTTP/1.0 418 I’m a teapot");
}
?>