Compare commits
No commits in common. "master" and "v0.1" have entirely different histories.
21
HISTORY
21
HISTORY
@ -1,21 +0,0 @@
|
|||||||
0.5 - 2014-08-15
|
|
||||||
Added a check to see if cURL was successful in
|
|
||||||
retrieving the XML-file. If it was not, then exit
|
|
||||||
with a UNKNOWN state and print the cURL error message.
|
|
||||||
|
|
||||||
0.4 - 2014-08-09
|
|
||||||
Added /u modifier to more preg_matches for UTF-8
|
|
||||||
Replaced a-zåäö with \p{L}
|
|
||||||
Fixed a couple of spelling errors and missing words
|
|
||||||
Replaced $program with PROGRAM on line 122
|
|
||||||
|
|
||||||
0.3 - 2014-08-03
|
|
||||||
Added /u modifier to the preg_match for UTF-8
|
|
||||||
|
|
||||||
0.2 - 2014-07-31
|
|
||||||
Replaced 'shell_exec("curl -s URL")' with PHP cURL function
|
|
||||||
Replaced all state-variables with constants
|
|
||||||
Replaced version and program variables with constants
|
|
||||||
|
|
||||||
0.1 - 2014-07-27
|
|
||||||
First release of check_smhiwarn
|
|
@ -16,9 +16,6 @@ Don't forget to quote the district in the argument, such as the below example.
|
|||||||
|
|
||||||
Create one instance of each district you want to monitor.
|
Create one instance of each district you want to monitor.
|
||||||
|
|
||||||
## Requirements ##
|
|
||||||
The script requires PHP5 and the PHP5 cURL module (php5-curl on Debian systems).
|
|
||||||
|
|
||||||
## Copyright ##
|
## Copyright ##
|
||||||
Original author is Jack-Benny Persson (jack-benny@cyberinfo.se).
|
Original author is Jack-Benny Persson (jack-benny@cyberinfo.se).
|
||||||
|
|
||||||
|
@ -20,22 +20,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Define exit status
|
// Define exit status
|
||||||
define ("OK", 0);
|
$ok = 0;
|
||||||
define ("WARNING", 1);
|
$warning = 1;
|
||||||
define ("CRITICAL", 2);
|
$critical = 2;
|
||||||
define ("UNKNOWN", 3);
|
$unknown = 3;
|
||||||
|
|
||||||
// Define version and program
|
$version = 0.1;
|
||||||
define ("VERSION", 0.5);
|
$program = $argv[0];
|
||||||
define ("PROGRAM", $argv[0]);
|
|
||||||
|
|
||||||
// Function for printing usage
|
// Function for printing usage
|
||||||
function usage()
|
function usage()
|
||||||
{
|
{
|
||||||
print "check_smhiwarn version " . VERSION . "\n";
|
print "check_smhiwarn version $GLOBALS[version]\n";
|
||||||
print "Copyright (C) Jack-Benny Persson <jack-benny@cyberinfo.se>\n";
|
print "Copyright (C) Jack-Benny Persson <jack-benny@cyberinfo.se>\n";
|
||||||
print "Usage: " . PROGRAM . " 'District'\n";
|
print "Usage: $GLOBALS[program] 'District'\n";
|
||||||
print "Example: " . PROGRAM . " 'Skåne län utom Österlen'\n";
|
print "Example: $GLOBALS[program] 'Skåne län utom Österlen'\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// All of the avaliable districts
|
// All of the avaliable districts
|
||||||
@ -101,7 +100,7 @@ $availDistricts = array(
|
|||||||
if (!isset($argv[1]))
|
if (!isset($argv[1]))
|
||||||
{
|
{
|
||||||
usage();
|
usage();
|
||||||
exit(UNKNOWN);
|
exit($unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set first argument to $district
|
// Set first argument to $district
|
||||||
@ -112,46 +111,33 @@ if ($district == 'list')
|
|||||||
{
|
{
|
||||||
foreach ($availDistricts as $dist)
|
foreach ($availDistricts as $dist)
|
||||||
print "$dist\n";
|
print "$dist\n";
|
||||||
exit(UNKNOWN);
|
exit($unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the district exists
|
// Check if the district exists
|
||||||
if (!preg_grep("/^$district$/u", $availDistricts))
|
if (!preg_grep("/^$district$/", $availDistricts))
|
||||||
{
|
{
|
||||||
print "$district does not exists\n";
|
print "$district does not exists\n";
|
||||||
print "List all avaliable districts by \"" . PROGRAM . " 'list'\"\n";
|
print "List all avaliable districts by \"$program 'list'\"\n";
|
||||||
exit(UNKNOWN);
|
exit($unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Retrive the data
|
// Retrive the data
|
||||||
//$data = file_get_contents("testing/smhi_alla_varningar.xml"); //For testing purposes
|
//$data = file_get_contents("testing/smhi_alla_varningar.xml"); //For testing purposes
|
||||||
$ch = curl_init("http://www.smhi.se/weatherSMHI2/varningar/smhi_alla_varningar.xml");
|
$data = shell_exec("curl -s http://www.smhi.se/weatherSMHI2/varningar/smhi_alla_varningar.xml");
|
||||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($ch, CURLOPT_FAILONERROR, true);
|
|
||||||
// check if curl failed and bail out if it did
|
|
||||||
if (($data = curl_exec($ch)) === false)
|
|
||||||
{
|
|
||||||
print curl_error($ch);
|
|
||||||
curl_close($ch);
|
|
||||||
exit(UNKNOWN);
|
|
||||||
}
|
|
||||||
curl_close($ch);
|
|
||||||
|
|
||||||
//print "\n$data\n"; // for testing purposes (uncomment to view xml-file)
|
|
||||||
|
|
||||||
// Regex the area (1st paranthesis is area, 2nd is warning class, 3rd is warning msg)
|
// Regex the area (1st paranthesis is area, 2nd is warning class, 3rd is warning msg)
|
||||||
preg_match("/($district)(?:: )(?:Varning klass )([1-3]+)(?:,\s)([-0-9\p{L}.,&\s]*)/iu",
|
preg_match("/($district)(?:: )(?:Varning klass )([1-3]+)(?:,\s)([-a-z0-9åäö.,&\s]*)/i",
|
||||||
$data, $matches);
|
$data, $matches);
|
||||||
|
|
||||||
// Count how many warnings are issued and issue a critical if more than one
|
// Count how many warnings are issued and issue a critical if more than one
|
||||||
preg_match_all("/$district/u", $data, $counts);
|
preg_match_all("/$district/", $data, $counts);
|
||||||
$numberMatches = (count($counts[0]));
|
$numberMatches = (count($counts[0]));
|
||||||
if ($numberMatches > 1)
|
if ($numberMatches > 1)
|
||||||
{
|
{
|
||||||
print "More than one warning is issued for $district, check smhi.se!";
|
print "More than one warning are issued for $district, check smhi.se!";
|
||||||
exit(CRITICAL);
|
exit($critical);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define the paranthesis
|
// Define the paranthesis
|
||||||
@ -169,20 +155,20 @@ else
|
|||||||
switch ($warnLevel)
|
switch ($warnLevel)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
print "No warnings issued for $district";
|
print "No warnings issued $district";
|
||||||
exit(OK);
|
exit($ok);
|
||||||
case 1:
|
case 1:
|
||||||
print "Class 1 warning issued for $district: $warnMsg";
|
print "Class 1 warning issued for $district: $warnMsg";
|
||||||
exit(WARNING);
|
exit($warning);
|
||||||
case 2:
|
case 2:
|
||||||
print "Class 2 warning issued for $district: $warnMsg";
|
print "Class 2 warning issued for $district: $warnMsg";
|
||||||
exit(CRITICAL);
|
exit($critical);
|
||||||
case 3:
|
case 3:
|
||||||
print "Class 3 warning issued for $district: $warnMsg";
|
print "Class 3 warning issued for $district: $warnMsg";
|
||||||
exit(CRITICAL);
|
exit($critical);
|
||||||
default:
|
default:
|
||||||
print "Unknown error for $district";
|
print "Unknown error for $district";
|
||||||
exit(UNKNOWN);
|
exit($unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user