Compare commits

...

7 Commits
v0.1 ... master

2 changed files with 39 additions and 15 deletions

View File

@ -1,4 +1,20 @@
2014-01-03 2014-01-03
Version 0.1 - First release of the plugin Version 0.1 - First release of the plugin
2014-01-04
Version 0.2 - Fixed two bugs, whereas one important
1. In case there more than one wheater alert for the specified
region, the script would bug out. Fixed by adding 'head -n1'
so that it always only shows the first warning issued.
2. In case there were swedish characters (åäö) in the warning
message they would output as their HTML-equivalent. Fixed
with another sed substitue command.
2014-01-09
Version 0.3 - SMHI has changed österlen to Österlen in the text. Updated this
in the hardcoded region/district names.
2014-01-09
Version 0.4 - Fixed an important bug. If the district/region did not exist
the script exited with a status 0 (OK). This should be status 3
(Unknown). This is now fixed.

View File

@ -21,14 +21,14 @@
################################################################################ ################################################################################
# check_smhi # check_smhi
Version="0.1" Version="0.4"
Author="Jack-Benny Persson (jack-benny@cyberinfo.se)" Author="Jack-Benny Persson (jack-benny@cyberinfo.se)"
# Binaries # Binaries
Which="/usr/bin/which" Which="/usr/bin/which"
# Binaries entered in the list will be avalible to the script as variables with # Binaries entered in the list will be avalible to the script as variables with
# the first letter uppercase # the first letter uppercase
Binaries=(sed awk egrep printf curl) Binaries=(sed awk egrep printf curl head)
# Variables # Variables
District="" District=""
@ -59,8 +59,8 @@ AvailDistricts=(
"Jämtlands län, Jämtlandsfjällen" "Jämtlands län, Jämtlandsfjällen"
"Västerbottens län, södra Lapplandsfjällen" "Västerbottens län, södra Lapplandsfjällen"
"Norrbottens län, norra Lapplandsfjällen" "Norrbottens län, norra Lapplandsfjällen"
"Skåne län utom österlen" "Skåne län utom Österlen"
"Skåne län, österlen" "Skåne län, Österlen"
"Blekinge län" "Blekinge län"
"Hallands län" "Hallands län"
"Kronobergs län, västra delen" "Kronobergs län, västra delen"
@ -113,7 +113,7 @@ print_help()
Options: Options:
-D -D
District to check for wheather alerts. District to check for wheather alerts.
NOTE: Districts must be quoted, such as "Skåne län utom österlen" NOTE: Districts must be quoted, such as "Skåne län utom Österlen"
-P -P
Print a list with all the avaliable districts. Print a list with all the avaliable districts.
-h -h
@ -145,7 +145,7 @@ if [ $# -eq 0 ]; then
exit $State_unknown exit $State_unknown
elif [ $# -ge 1 ]; then elif [ $# -ge 1 ]; then
echo "$1" | egrep -q "\-." echo "$1" | $Egrep -q "\-."
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "$0 requires an option" echo "$0 requires an option"
print_help print_help
@ -184,7 +184,7 @@ Index=0
Match=0 Match=0
while [ $Index -lt $Tot ]; do while [ $Index -lt $Tot ]; do
echo ${AvailDistricts[$Index]} | egrep -x "$District" &> /dev/null echo ${AvailDistricts[$Index]} | $Egrep -x "$District" &> /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
Match=1 Match=1
break break
@ -195,16 +195,17 @@ done
if [ $Match -eq 0 ]; then if [ $Match -eq 0 ]; then
echo "District $District does not exist" echo "District $District does not exist"
print_help print_help
exit $State_unknown
fi fi
### Main ### ### Main ###
# Fetch the warning page # Fetch the warning page
Data=`curl -s http://www.smhi.se/vadret/vadret-i-sverige/Varningar/varning_tabell_n1_sv.htm` Data=`$Curl -s http://www.smhi.se/vadret/vadret-i-sverige/Varningar/varning_tabell_n1_sv.htm`
# First we must replace all åäö with their HTML equivalent # First we must replace all åäö with their HTML equivalent
HtmlDist=`echo $District | sed '{ HtmlDist=`echo $District | $Sed '{
s/å/\&aring\;/g s/å/\&aring\;/g
s/Å/\&Aring\;/g s/Å/\&Aring\;/g
s/ä/\&auml\;/g s/ä/\&auml\;/g
@ -214,17 +215,24 @@ s/Ö/\&Ouml\;/g
}'` }'`
# Get the line number for the current district in the HTML-file and add one line to it # Get the line number for the current district in the HTML-file and add one line to it
LineNr=`echo "$Data" | sed -n "/$HtmlDist/="` LineNr=`echo "$Data" | $Sed -n "/$HtmlDist/=" | $Head -n1`
((LineNr++)) ((LineNr++))
# Read the warning message (for example kuling, orkan, åska) # Read the warning message (for example kuling, orkan, åska)
WarnMsg=`echo "$Data" | sed -n "${LineNr}p" | egrep -o "Varning klass [0-3] .*" | \ WarnMsg=`echo "$Data" | $Sed -n "${LineNr}p" | $Egrep -o "Varning klass [0-3] .*" | \
sed 's/\(.*\).........../\1/' | \ $Sed 's/\(.*\).........../\1/' | \
awk '{print substr($0, index($0,$4))}'` $Awk '{print substr($0, index($0,$4))}' | $Sed '{
s/\&aring\;/å/g
s/\&Aring\;/Å/g
s/\&auml\;/ä/g
s/\&Auml\;/Å/g
s/\&ouml\;/ö/g
s/\&Ouml\;/Ö/g
}'`
# Get the current warning class (1, 2 and 3) # Get the current warning class (1, 2 and 3)
Class=`echo "$Data" | sed -n "${LineNr}p" | egrep -o "Varning klass [0-3]" \ Class=`echo "$Data" | $Sed -n "${LineNr}p" | $Egrep -o "Varning klass [0-3]" \
| awk '{ print $3 }'` | $Awk '{ print $3 }'`
# Chech the current warning class issued for the district # Chech the current warning class issued for the district
if [ -z $Class ]; then if [ -z $Class ]; then