Commit initial: récupération et tri rapide
This commit is contained in:
commit
a52829f96c
104 changed files with 11892 additions and 0 deletions
244
nagios/check_wp.php
Normal file
244
nagios/check_wp.php
Normal file
|
@ -0,0 +1,244 @@
|
|||
#!/usr/bin/php
|
||||
<?php
|
||||
###################################
|
||||
#
|
||||
# WordPress Updates Monitoring
|
||||
# written by Martin Scharm
|
||||
# see http://binfalse.de
|
||||
#
|
||||
###################################
|
||||
|
||||
define ("OOK", 0);
|
||||
define ("WRN", 1);
|
||||
define ("ERR", 2);
|
||||
define ("MMH", 3);
|
||||
|
||||
$instdir = null;
|
||||
$domain = null;
|
||||
$website = null;
|
||||
|
||||
$check_core = true;
|
||||
$check_plugins = true;
|
||||
$check_themes = true;
|
||||
$verify_cert = true;
|
||||
|
||||
$help = false;
|
||||
$version = "1.0";
|
||||
$err = array ();
|
||||
$perfdata = array();
|
||||
|
||||
for ($i = 1; $i < count ($argv); $i++)
|
||||
{
|
||||
switch ($argv[$i])
|
||||
{
|
||||
case "--domain":
|
||||
$domain = $argv[++$i];
|
||||
break;
|
||||
case "--dir":
|
||||
$instdir = $argv[++$i];
|
||||
break;
|
||||
case "--web":
|
||||
$website = $argv[++$i];
|
||||
break;
|
||||
case "--no-core":
|
||||
$check_core = false;
|
||||
break;
|
||||
case "--no-plugins":
|
||||
$check_plugins = false;
|
||||
break;
|
||||
case "--no-theme":
|
||||
$check_themes = false;
|
||||
break;
|
||||
case "--insec-cert":
|
||||
$verify_cert = false;
|
||||
break;
|
||||
default:
|
||||
$err[] = $argv[$i]."?";
|
||||
$help = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!$website && !$instdir)
|
||||
$err[] = "no installation directory and no website, don't know what to check...";
|
||||
|
||||
if (!$check_core && !$check_plugins && !$check_themes)
|
||||
$err[] = "--no-core and --no-plugins and --no-theme? you must be kidding...";
|
||||
|
||||
if ($instdir && !file_exists ($instdir.'/wp-load.php'))
|
||||
$err[] = "your installation is way to old or your installation path isn't correct...";
|
||||
|
||||
if ($help || count ($err))
|
||||
{
|
||||
if (count ($err))
|
||||
echo implode (" | ", $err)."\n";
|
||||
echo "Okay, let me help you... btw. this is version $version\n";
|
||||
echo "Valid arguments:\n";
|
||||
echo "\t--domain DOMAIN\tcheck for DOMAIN (required for multidomain installations)\n";
|
||||
echo "\t--dir DIRECTORY\twordpress installation directory can be found in DIRECTORY\n";
|
||||
echo "\t--web WEBSITE\tcheck _only_ the website WEBSITE (will just check the core version for updates, based on meta name generator)\n";
|
||||
echo "\t--insec-cert\tdon't verify SSL cert (in combination with --web)\n";
|
||||
echo "\t--no-core\tdon't check the core\n";
|
||||
echo "\t--no-plugins\tdon't check the plugins\n";
|
||||
echo "\t--no-theme\tdon't check the themes\n";
|
||||
echo "\t-h | --help\thelp me please\n\n";
|
||||
echo "that's it for the moment...\n";
|
||||
exit (MMH);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($website)
|
||||
{
|
||||
// just check the website...
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $website);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
|
||||
if (!$verify_cert)
|
||||
{
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
}
|
||||
$data = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
preg_match('/meta[^>]*generator[^>]*wordpress\s+([0-9.]+)/i', $data, $matches);
|
||||
if (count ($matches) < 2 || !$matches[1])
|
||||
{
|
||||
echo "no version in web found...\n";
|
||||
exit (WRN);
|
||||
}
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, "http://api.wordpress.org/core/version-check/1.2/?version=" . $matches[1]);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
|
||||
$data = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
$data = explode ("\n", $data);
|
||||
if (version_compare ($data[3], $matches[1]) > 0)
|
||||
{
|
||||
echo "Your core is out of date! " . $matches[1] . " -> " . $data[3] . "\n";
|
||||
exit (ERR);
|
||||
}
|
||||
|
||||
// that's it
|
||||
echo "Running " . $matches[1] . " is fine.\n";
|
||||
exit (OOK);
|
||||
}
|
||||
|
||||
|
||||
// ok lets check a local installation!
|
||||
|
||||
if ($domain) // multihost
|
||||
$_SERVER['HTTP_HOST'] = $domain;
|
||||
|
||||
// include wp stuff, don't need to to reinvent the wheel...
|
||||
require_once($instdir.'/wp-load.php');
|
||||
|
||||
// let wordpress prepare it's tests
|
||||
wp_version_check();
|
||||
wp_update_plugins();
|
||||
wp_update_themes();
|
||||
|
||||
// if it's pre 2.9 get_site_transient might be missing... pretty old my friend!
|
||||
if (!function_exists ("get_site_transient"))
|
||||
{
|
||||
echo "OMG. Time to get some updates!!!";
|
||||
exit (ERR);
|
||||
}
|
||||
|
||||
$ret = OOK;
|
||||
$suppl = "";
|
||||
$msg = array ();
|
||||
|
||||
// check the core of your wordpress
|
||||
if ($check_core)
|
||||
{
|
||||
$core = get_site_transient('update_core');
|
||||
if (isset ($core->updates) && version_compare ($core->updates[0]->current, $core->version_checked) > 0)
|
||||
{
|
||||
$msg[] = "Core is out-of-date!";
|
||||
$suppl .= "Core: " . $core->version_checked . " -> " . $core->updates[0]->current . "; ";
|
||||
$ret = max ($ret, ERR);
|
||||
}
|
||||
else
|
||||
$msg[] = "Core is up-to-date.";
|
||||
}
|
||||
else
|
||||
$msg[] = "Skipping core checks!";
|
||||
|
||||
// check the plugins
|
||||
if ($check_plugins)
|
||||
{
|
||||
$plugin_msg = array ();
|
||||
$plugins = get_site_transient('update_plugins');
|
||||
if (isset ($plugins->response))
|
||||
{
|
||||
foreach($plugins->response as $name => $update)
|
||||
{
|
||||
$plugin_msg[] = $update->slug . ": " . $plugins->checked[$name] ." -> " . $update->new_version;
|
||||
}
|
||||
}
|
||||
if (count ($plugin_msg))
|
||||
{
|
||||
$s = "s are";
|
||||
if (count ($plugin_msg) == 1)
|
||||
$s = " is";
|
||||
$msg[] = count ($plugin_msg) . " plugin" . $s . " out-of-date!";
|
||||
$suppl .= implode ("; ", $plugin_msg) . "; ";
|
||||
$ret = max ($ret, ERR);
|
||||
}
|
||||
else
|
||||
$msg[] = "Plugins are up-to-date.";
|
||||
}
|
||||
else
|
||||
$msg[] = "Skipping plugin checks!";
|
||||
|
||||
// check the themes
|
||||
if ($check_themes)
|
||||
{
|
||||
$themes_msg = array ();
|
||||
$themes = get_site_transient('update_themes');
|
||||
if (isset ($themes->response))
|
||||
{
|
||||
foreach($themes->response as $name => $update)
|
||||
{
|
||||
$themes_msg[] = $name . ": " . $themes->checked[$name] ." -> " . $update["new_version"];
|
||||
}
|
||||
}
|
||||
if (count ($themes_msg))
|
||||
{
|
||||
$s = "s are";
|
||||
if (count ($plugin_msg) == 1)
|
||||
$s = " is";
|
||||
$msg[] = count ($themes_msg) . " theme" . $s . " out-of-date!";
|
||||
$suppl .= implode ("; ", $themes_msg) . "; ";
|
||||
$ret = max ($ret, ERR);
|
||||
}
|
||||
else
|
||||
$msg[] = "Themes are up-to-date.";
|
||||
}
|
||||
else
|
||||
$msg[] = "Skipping theme checks!";
|
||||
|
||||
// Get the perfdata
|
||||
$count_posts = wp_count_posts();
|
||||
$perfdata['posts_published'] = sprintf('%s=%s', 'posts_published', $count_posts->publish);
|
||||
$comments_count = wp_count_comments();
|
||||
$perfdata['comments'] = sprintf('%s=%s', 'comments', $comments_count->total_comments);
|
||||
$count_users = count_users();
|
||||
$perfdata['users'] = sprintf('%s=%s', 'users', $count_users['total_users']);
|
||||
|
||||
// collect our info
|
||||
if ($ret == OOK)
|
||||
echo "Well done! ";
|
||||
else
|
||||
echo "Need attention! ";
|
||||
|
||||
echo implode (" - ", $msg) . " - " . $suppl . "|" . implode(' ', $perfdata) . "\n";
|
||||
exit ($ret);
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue