Subversion Repositories vnag

Compare Revisions

No changes between revisions

Regard whitespace Rev 36 → Rev 37

/trunk/plugins/hp_smartarray/HpSmartArrayCheck.class.php
0,0 → 1,164
<?php /* <ViaThinkSoftSignature>
Ag3defe83bFC1h4qusQeuKtptcZzldvFcdE3Hwhg8gBnQ3wcb2Idoj+tPw5SojcMd
KoRcuTrvW0SjG0wT4gnN86CVdcYjqFdXK64k4xWGP2zftxmsfO1FQm7ASKzOWnWJI
o9ySzrp2jTYQbVoCzFlTsKgQOat7s1IflSA/ykO1iJ5Lp+qirlV1wr99TAjftAFpA
B51ZeoGLckQPFPoZCXF13NZ/QTo4YLcUtn+h1u39MzTdPFerBvQdx1BiXnzmMR7cy
W4yS5mX1Vz+Y4xq8kIcSqsC1eX7bLXlUtkLBC7oPQe/3OP+VoMDz/99MvVNDUeZ3k
9HZQRQKoTClHBxkZ4j41PJxJwtZEK11e0CbQQ0xci2cOjx0yBnQ3cAtB+Gg2O+910
4K0PhRJ5990+wYjZ62LNyMEu+ri+7P0PW2x3eXY+bh4GLfdNcNxIeZffDzT32EhNX
Ore9Qxbr2HYru131rtvwI8K89icuT3yIuPEagMArGqcDoCYdssLF1eEVqnWRYdRfU
O2DCVfh5qvrWasV9C38z6RyGT6CJYv4+k1sk4WDXCC1se+lDBKnRpaVBuJHDMjcjn
KvrLjAderDel+pTGvZ5Ht69em/YQHrdPom6Cpl+8yjhk9XqS/6jh+HFuPxQQBcYwk
z/HMTnCNFE0vF0v1UATA6tfT4McqNYfDQtJengQ8n+XDFKx+l4g+0xSNB2AAbO3zP
vplioHVfZt0zaQR0JQD1QPp529vOCJnHXAASPoRwvdJVT9mMbx4gbIbbXdxZkQGju
e7UeWByNLFDML53vWTA6vel413YmZbFXhFIrzONiVHaPYynmwqu4lXqmGkZW3NoPB
7yT4rsV3cWsxHlGNlF+La2RX8y2aHvAA/Q/HoOL1f4NUlQINe5ms0inQu2vuMvjCu
GeFmfuT5QQ5pUzneXDgkxtEfy4mP51Obko5ZiXmKB7qaBDl71dFO0mGf42f/YVvn4
x5I6K6Wb0/Qrz/zdZArWwtrh4FBbeOG56qtIo7zeJ7NVpZoelwmFlBLBkiF5tebGD
5zLcP5DtQ4JRNvT1PnkW4TQJxe+6RjSNuo8hLD1fs/gyJUeZJg8eux43axOgUgtJG
YLpE4CjN0HgcqNVKRTPpOYawHlfqR8Ua0wZ0q2b2qGRG/0kzRprlaY8eaCZldZIHs
HNyHC04JkFGVFdnUVI9a1XAI9aHn4Oeeim0Qg/Pjr64tiD7PIoEmmAp1OUmqQDcGv
DtfbxZoxjAB3SPYWVhMckmktRsW2fykBmQVS5z+FNYG31w7fnbCIoyb6eE5pAC5Yf
wznGurziUwinPFP7zSvYtAhyt5aUca3BGfkvnkDW6b2folcc/KmLxMVTJEGvMq5Eb
g==
</ViaThinkSoftSignature> */ ?>
<?php
 
/*
* VNag - Nagios Framework for PHP
* Developed by Daniel Marschall, ViaThinkSoft <www.viathinksoft.com>
* Licensed under the terms of the Apache 2.0 license
*
* Revision 2021-08-06
*
* Changelog:
* 2021-08-06 1.0 Initial release
*/
 
declare(ticks=1);
 
class HpSmartArrayCheck extends VNag {
private $argSlot = null;
 
public function __construct() {
parent::__construct();
 
if ($this->is_http_mode()) {
// Don't allow the standard arguments via $_REQUEST
$this->registerExpectedStandardArguments('');
} else {
$this->registerExpectedStandardArguments('Vhtv');
}
 
$this->addExpectedArgument($this->argSlot = new VNagArgument('s', 'slot', VNagArgument::VALUE_REQUIRED, 'slot', 'The slot of the Smart Array controller.', null));
 
$this->getHelpManager()->setPluginName('vnag_hp_smartarray');
$this->getHelpManager()->setVersion('1.2');
$this->getHelpManager()->setShortDescription('This plugin checks the controller and disk status of a HP SmartArray RAID controller (using ssacli).');
$this->getHelpManager()->setCopyright('Copyright (C) 2011-$CURYEAR$ Daniel Marschall, ViaThinkSoft.');
$this->getHelpManager()->setSyntax('$SCRIPTNAME$ --slot slotnumber');
$this->getHelpManager()->setFootNotes('If you encounter bugs, please contact ViaThinkSoft at www.viathinksoft.com');
}
 
private function ssacli_physical_disk_status($slot) {
$mock_file = __DIR__.'/status_pd.mock';
 
if (file_exists($mock_file)) return array(0, file_get_contents($mock_file));
 
$cmd = 'ssacli ctrl '.escapeshellarg('slot='.$slot).' pd all show status';
 
$out = array();
exec($cmd, $out, $ec);
 
return array($ec, implode("\n", $out));
}
 
private function ssacli_logical_disk_status($slot) {
$mock_file = __DIR__.'/status_ld.mock';
 
if (file_exists($mock_file)) return array(0, file_get_contents($mock_file));
 
$cmd = 'ssacli ctrl '.escapeshellarg('slot='.$slot).' ld all show status';
 
$out = array();
exec($cmd, $out, $ec);
 
return array($ec, implode("\n", $out));
}
 
private function ssacli_controller_status($slot) {
 
// When slot is invalid, you receive an output to STDOUT with ExitCode 1
// "Error: The controller identified by "slot=0" was not detected."
 
$mock_file = __DIR__.'/status_ctrl.mock';
 
if (file_exists($mock_file)) return array(0, file_get_contents($mock_file));
 
$cmd = 'ssacli ctrl '.escapeshellarg('slot='.$slot).' show status';
 
$out = array();
exec($cmd, $out, $ec);
 
return array($ec, implode("\n", $out));
}
 
private function check_all($slot, &$ok) {
list($ec, $cont) = $this->ssacli_physical_disk_status($slot);
if ($ec != 0) {
$this->setStatus(VNag::STATUS_UNKNOWN);
$this->setHeadline("Error checking physical disk status: $cont");
$ok = false;
} else {
$cont = explode("\n", $cont);
foreach ($cont as $s) {
$s = trim($s);
if ($s == '') continue;
if (strpos($s,': OK') !== false) continue;
$this->setStatus(VNag::STATUS_WARNING);
$this->setHeadline($s);
$ok = false;
}
}
 
list($ec, $cont) = $this->ssacli_controller_status($slot);
$cont = explode("\n", $cont);
foreach ($cont as $s) {
$s = trim($s);
if ($s == '') continue;
if (preg_match('@Smart Array (.+) in Slot (.+)@', $s, $dummy)) continue;
if (strpos($s,': OK') !== false) continue;
$this->setStatus(VNag::STATUS_WARNING);
$this->setHeadline($s);
$ok = false;
}
 
list($ec, $cont) = $this->ssacli_logical_disk_status($slot);
$cont = explode("\n", $cont);
foreach ($cont as $s) {
$s = trim($s);
if ($s == '') continue;
if (strpos($s,': OK') !== false) continue;
$this->setStatus(VNag::STATUS_WARNING);
$this->setHeadline($s);
$ok = false;
}
}
 
protected function cbRun() {
$slot = $this->argSlot->available() ? $this->argSlot->getValue() : '';
 
if ($slot == '') {
throw new Exception("Require slot argument");
}
 
$ok = true;
 
$this->check_all($slot, $ok);
 
if ($ok) {
$this->setStatus(VNag::STATUS_OK);
$this->setHeadline("All OK at slot $slot");
}
}
}
/trunk/plugins/hp_smartarray/check_hp_smartarray
0,0 → 1,43
#!/usr/bin/php
<?php /* <ViaThinkSoftSignature>
AlJwefRj6Rb5YD8zHjEHPWBas/X4piLRPAru8064jlBG8rBYBjToF2F09QXRxogf5
EpsYyl2h2HW/su2RkA7qtvI2Lr8fLnCAXRYNtYkXDcQuTdECFCKMLSOObfKlWn2Mr
VeN/Ed/iUvz2Eon27w7Sr5hmwTKbTD9lUT7qmKVd8/VaCCg/Ho7KpsYqbQOoBc2qd
7AnDCoKofPumHWZs0x8o5uSH/WO0nV2lR+6XxrG7d+WZr5PvNpVEeWHTMgJAUkife
GbJKUjaEp7NW8fG+CFucDT92XlHEJQqgfh0EjrAEGOD9GIwP2wDa0nICDjVObEo78
5EnNbHXkIcfo7Z9o+jhS5lkH5pEZuAklUCDt7/iJfLM3Zue6HqjLJGDjdYgboUV3o
ylYkMyBhycIHwLBLgVBacfaoPAnhMRtGqhrjPwRl0zaCjb8PWKWy8Mgtg148DmyQH
fGyvw0pkam9UaD4uR/4/arqecBQwiHosRUVPcn7h8Ml6mqk08dpX+FPSkVbns4YKw
41vG45oQ5Og7TIh7Ntq/YU1RmtYUAzcByHW9Hw8VioDjwCZH3M316O9lEAmkasT+j
wwY6d84UcXflwScAwN2QCYEyUg19gkW/C7W428MBRvH6OjAVpBBLqAt+kY1I06oXl
NHpXDF00/Z0258UgoM7NXON3GDYik2rgCLG+WKTT74I2NGBpHESJ6Wt6ws0mnwlmp
/GbDULicoZ2rCY1Q9boWGSB45C5m57DHzM7iGP0XcIZsMWEeJn0XfkjgWmjMPkhX0
RTtVGo/uUS3+s0Ew1PEBgxEOFRshfELiHkBAIFpdSOt718JD+9q+0tFnfTGQXVZcN
Eq3AJnXIJnmJqf2WUd7iv5F1z4UKMevY8+Y7ORQe3MjsYUAeF+YeBOagzMXyxX7r8
zTX9UYJzCXcXGWE2JnJQt8WGCC1jEqgxmthJv7nGIlLoA/0JYvgH/VJbq+vNv64bP
TFEGIAP1ykaddxFGwiRdeUJmMvnLp0hL39+ZNJZFXpROxBUcj0ceo7fDBfIF2GRSW
sFQ0h66ogXNgRvBwc9gF3ESL7KKhqG9GihpOBJHRBtCyOUK1kqQPjYAFjWgig/mZG
SRYKtFLjEr5lPqomyh0xq8fP6ppUCEOuzuG58cM6t4wriakmBNYW/OCLSiQ/JlDAG
uzvMxn5fjmP1YyEEoA3c4oAaNbfiCJcMPr00aIFG1H3Re3eT5RP/5mPohVUI0QgS3
V+Cs8NCm9S16vRGGi6TDa6U70sjdKx/piYVRY5zyohFqySlZdq9gSlnAVuJlgoLCU
LBzqv4xG20MedzRZMIbWDRwFoGvwImrqo6Ee8WeBaJaKAT9e9H4QXnLk4j8g4IPOf
w==
</ViaThinkSoftSignature> */ ?>
<?php
 
/*
* VNag - Nagios Framework for PHP
* Developed by Daniel Marschall, ViaThinkSoft <www.viathinksoft.com>
* Licensed under the terms of the Apache 2.0 license
*
* Revision 2021-08-06
*/
 
declare(ticks=1);
 
require_once __DIR__ . '/../../framework/vnag_framework.inc.php';
require_once __DIR__.'/HpSmartArrayCheck.class.php';
 
$job = new HpSmartArrayCheck();
$job->run();
unset($job);
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/plugins/hp_smartarray/icinga2.conf
0,0 → 1,42
// Put this file in /etc/icinga2/conf.d/...
 
// VNag - Nagios Framework for PHP
// Developed by Daniel Marschall, ViaThinkSoft <www.viathinksoft.com>
// Licensed under the terms of the Apache 2.0 license
//
// Revision 2021-08-06
 
// ATTENTION!
// To make this work, you need to add following to /etc/sudoers (adjust the paths)
// nagios ALL=(root) NOPASSWD:/daten/vnag/plugins/hp_smartarray/check_hp_smartarray"
// You MUST make sure that the script check_hp_smartarray and all other VNag scripts are
// owned by root, otherwise the owner could change the code, and it would be executed with
// root privileges!
 
object CheckCommand "vnag_hp_smartarray" {
command = [
"/usr/bin/sudo",
 
// PLEASE ADJUST THIS PATH
"/daten/vnag/plugins/hp_smartarray/check_hp_smartarray"
]
 
arguments = {
"-s" = {
value = "$vnag_hp_smartarray_slot$"
description = "The slot where the HP Smart Array RAID controller is installed"
required = true
}
}
}
 
// Example usage:
//
// apply Service "example_hp_smartarray_slot3" {
// import "generic-service"
// check_command = "vnag_hp_smartarray"
// vars = {
// vnag_hp_smartarray_slot = 3
// }
// assign where host.name == NodeName
// }
/trunk/plugins/hp_smartarray/status_ctrl.mock_
0,0 → 1,6
 
Smart Array P410 in Slot 3
Controller Status: OK
Cache Status: OK
Battery/Capacitor Status: OK
 
/trunk/plugins/hp_smartarray/status_ld.mock_
0,0 → 1,9
 
logicaldrive 1 (1.82 TB, RAID 0): OK
logicaldrive 2 (1.82 TB, RAID 0): OK
logicaldrive 3 (1.82 TB, RAID 0): OK
logicaldrive 4 (1.82 TB, RAID 0): OK
logicaldrive 5 (1.82 TB, RAID 0): OK
logicaldrive 6 (1.82 TB, RAID 0): OK
logicaldrive 7 (1.82 TB, RAID 0): OK
logicaldrive 8 (1.82 TB, RAID 0): OK
/trunk/plugins/hp_smartarray/status_pd.mock_
0,0 → 1,9
 
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, 2 TB): OK
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, 2 TB): OK
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, 2 TB): OK
physicaldrive 1I:1:4 (port 1I:box 1:bay 4, 2 TB): OK
physicaldrive 1I:1:5 (port 1I:box 1:bay 5, 2 TB): OK
physicaldrive 1I:1:6 (port 1I:box 1:bay 6, 2 TB): Predictive Failure
physicaldrive 1I:1:7 (port 1I:box 1:bay 7, 2 TB): OK
physicaldrive 1I:1:8 (port 1I:box 1:bay 8, 2 TB): OK
/trunk/plugins/joomla_version/JoomlaVersionCheck.class.php
1,26 → 1,26
<?php /* <ViaThinkSoftSignature>
K33sSoM0IKpmPqNAvAJX4IZOxiI4PJ3Az1/SbwuExGGZCAoXMGdC4qJwLQdefulEV
W8GKw5FJq/aBeUb1JIHdh22S45AcdWp5zeyY1uOHi7kkI9LIobrtyI/KZ4gGp6b3m
pmFSgAUJAiuXdO2+BW6PLAi5yBwODAtD3oWeIVTINfyY+hyMb79qYxi703sTc+CG2
BUggv91FVPIOQ0j3if3kTjX4pm2SQrogm+tcq/w57b2uKME/3E3MxzIHJl0d2V1jI
KXPlf3zgz6ifT007mSMEXBqcmhOLGLDpkWzm81dFM6WDg/xkS3rTrL0fKDT4YNDjM
CV430Sbr3bghuhEAtC168PNyDUnH4rKV2dn3DhQYA7Ubh9Y5BUvAOjKMkuXtyUlkP
G/enu4v6+uH2RQIXW0KSGXvvCDayTjEZRUI5x6Co069LOQ0p2/Z2PB1feVwtFnv7i
LojjxhPVP9lbeNh38QhRF3SxcnW0oXF1U7hqwBS/n5P38FVKtOy7EUFA+PqOiqLh9
fvsr+Oz/yXP0W1uvaWai4l1v1g2YbSe5YLfA6QrAxB/z8KeEy1zkjVhigtOTiT7Gv
xywredNXsMTC9fGpfmnJx82CcVpGDFy2PNzILYP44ubjeLliXOUSOA4wXcnegUh5Q
G41z3mDIrUTCwuZ+93LbCWzw5DuPPAj6tXndfKAhtZJTNDeQMkHZgOZjwBIHP38Wm
BglIhY9RsWPdI6J59GMBIfCmGElHRQjtxscrMNtfHmPLM+fue6RAHQ5fi8Zok49x4
z+EXm2cTWs0AwmVmojluDZENV1tLxXloioalY+x5VuvTcAfbE7IAXeblkrIOJQrRM
WcbUzfLXkLQqjPqpj1mZ10X7+zWm/hY718nITJCBtTcJ/QSHHVqsh2GNAVrO4UPY5
mB5qLGq5kFOtwW4sSCQ5l97++zQ0cDIQiL0Xxy6YabYTTePodD/ncr1HfB8Jm/380
E3pULdzyhbHmyIn03/g43nkbhOogVMEFmwTprDchfzCVj8QJf9XG8SRVhbtqugYP9
hhCLvRtBtX0vTiYJL0n/shPZ7ZN89PDYLRMnuxu1L3r/syYulLtqykOHdto3K6PyS
FofDhfwXXezLcf99yyZhf9w01zkK1szRwEaz2vJseQXtMXzwGu1RzxXqfSyFXblpw
/2OujCLG/AKoT718DseQBOQAqCKpKLmNlGFmdI0tPQcqwwm6KF7dTy67PBQIZ7IHd
/BpuMjdyKpZOKTpGEBvDjk1a2CRDAhDNQreJaqw3bW1vNbLiqtjARKEDSXg3fx84h
8ont601uiedZGJ/o2lWwaZ5uU7tPQXEmL2eNvbUoXnYG3gCZSCVhpAYjzhnKxygeP
A==
IVBwOjr3n/pCZ7PzcZqZdKFy6ibL85VvOoRY3/b9Y0f46+8ggo8jVRVChw9BQ8BEl
tAr7KvfpxAcNf5TXhbrYurHeIJT2hM2x4ReAPEMcwxh7cdBYuaXAfq2rMKILRAKTy
p+0M7thMCz5LUw+is5DWWtpuW1oaW6obOzJ43+y0QPz0EGE0RbUTLFyeTHmHTdCHk
rETmMwty+s7tzdthAEB9fCviq34QlKiBmqMlw5DfwDJmLh+NK5Y441M8pJ31EZQvP
nyyGab+i7ZukBApllkdzYyLWy0xVSHK8DaZ7qLK3Lz6t+ClZLa/1N3HsIiRLKYYZ/
LAFZJyETaGaz3DrrbsdjtpKKEWe1GHIRLqW8h6ENFK9nBYC8NOSSLSt23W9B9T3RY
pD4CrdxlOog1hEeAI5HBvJ0h9W8x2MvHPk9K2EgIQ2WR1ThwYjykuf2ohfukPe/zK
tWUxYaAwzTOVGd+I/PGgEKFEbTa2Wk0cZJCSSkR7Tn67HpDle2Th6/KKq9se8GlMb
dfs4CDulmCpoDslnBPxsdNMYQCJSTAVooVEPywg/MZsZUEgMn8kXDMNmPAVTz29Tr
YCjcXRyiz3eWrCTyRpPCoAttfQnxdtebZi43rsI51wuetAzYUlmDxNMSfbfzyrIMN
HXovpWmjaFni8unCe7KUNxwWZlEUnj06SjGrFCWpSmYBdKRt3k0cJUs2lEjVhiQ6W
mNLLizMlw4/s5B5T8+P52+wcwGX8++etkM1GMDTnrA8yBH37gtOdnvOe7kr9pLO0Y
8zk5rJxBfQtc+eIflITiyrUNzLE3cznNzYPay2STW6v+iuRfXCPWEvxJbIOCcuwW4
DX0cfCzhfoL1IuSAUVK8D7eoafnebdKJa+H8wNnK8SWejwa27z2HXXYXeZ4BUcfL7
ubKtxOLRQLuqjKo5O3U9o9vMRi/OZLuBwYuabg/qYcPFEtBbI7JnyauU4qzWqL5m7
dC+aWrvbhn8hHqMB8p9A3PilL0NlVBlQXwZfYxYIanfooxpVPiJHBjRafCjEBQwsq
YYgDlcGfCl8r0yyw5Meq3hE91F1MWyW74nRzJPZElOCNmvAMxxdMk0N5Db5/KsC37
mKb/9o6R3fe9SsjF+C189u6yXomVmJJPQc8xWvQWEZ/i3MIGwtGrMpEBMKCU2Qbxu
mrVSsFzSZBBThut0deDgoTZ3B1VwJ3fcZdYCy7hsMBTtAxZbC/rtkMeUvSTRiHM0d
fpMIt0utv9dF+nbnnx89k6W2ML+p3ZkfoRJ/0ANYUAyPG+tjpuB31t9FkDHCQBKdB
0A9IO8pG7STLiEm73ZKxF7oOZ8xwhaUqBr93brTRY1fmsKgRo7lAlHcSGe4viwDP5
g==
</ViaThinkSoftSignature> */ ?>
<?php
 
71,7 → 71,7
 
$count = 0;
foreach ($manifest->updateservers->server as $updateserver) {
$cont = @file_get_contents($updateserver);
$cont = file_get_contents($updateserver);
if ($cont) {
$extensions = new SimpleXMLElement($cont);
foreach ($extensions as $candidate) {