Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
check_https
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
It checks if a website runs on https, without checking the certificate.
Usage:
./check_https www.example.com
Optional: port number
./check_https www.example.com 444
CHANGELOG on v0.4:
add timeout
Usage:
./check_https www.example.com
Optional: port number
./check_https www.example.com 444
CHANGELOG on v0.4:
add timeout
Reviews (6)
byitechnology.zone, December 14, 2021
I did try your script but it was little bit unstable.
Suddenly I have checked the check_http which is already there in the /nagios/libexec/check_http
check_http -S www.sitename.or.ip -w seconds -c seconds
-S Connect via SSL. Port defaults to 443.
-w Response time to result in warning status (seconds)
-c Response time to result in critical status (seconds)
you can add --ssl=1.2 for TLS1.2 (read help)
for example:
/usr/local//nagios/libexec/./check_http -S www.google.com -w 2 -c 5
or
/usr/local//nagios/libexec/./check_http --ssl=1.2 www.google.com -w 2 -c 5
Next
Define The Command Inside commands.cfg
define command {
command_name check_https
command_line $USER1$/check_http -S $ARG1$ -w $ARG2$ -c $ARG3$
}
Define Service
define service {
use local-service ; Name of service template to use
host_name LOCALHOST
service_description HTTPS
check_command check_https!localhost!0.500!0.900
notifications_enabled 1
}
-w -c 0.0 accept millisecond
It's handy when you check multiple internet links either the links is up or down, sites functions, port status.
Suddenly I have checked the check_http which is already there in the /nagios/libexec/check_http
check_http -S www.sitename.or.ip -w seconds -c seconds
-S Connect via SSL. Port defaults to 443.
-w Response time to result in warning status (seconds)
-c Response time to result in critical status (seconds)
you can add --ssl=1.2 for TLS1.2 (read help)
for example:
/usr/local//nagios/libexec/./check_http -S www.google.com -w 2 -c 5
or
/usr/local//nagios/libexec/./check_http --ssl=1.2 www.google.com -w 2 -c 5
Next
Define The Command Inside commands.cfg
define command {
command_name check_https
command_line $USER1$/check_http -S $ARG1$ -w $ARG2$ -c $ARG3$
}
Define Service
define service {
use local-service ; Name of service template to use
host_name LOCALHOST
service_description HTTPS
check_command check_https!localhost!0.500!0.900
notifications_enabled 1
}
-w -c 0.0 accept millisecond
It's handy when you check multiple internet links either the links is up or down, sites functions, port status.
bynetworkshark, October 9, 2020
I removed ipcalc from the code and replaced it with regex, because ipcalc gave errors of missing parameters.
----- CODE -----
[...]
# Variables definition
# my PID
mypid="$$"
html_tmp="/tmp/tmp_html.$mypid"
rep_tmp="/tmp/tmp_rep.$mypid"
add_uri='https://'
end_uri='/'
PORT=''
exit_code=2
regexIPv4="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
regexIPv6=".*:.*"
[...]
# Give some brain to this script. Detect yourself if we are checking an hostname, an ipv4 or an ipv6
if [[ $1 =~ $regexIPv4 ]]
then
target=ipv4
elif [[ $1 =~ $regexIPv6 ]]; then
target=ipv6
else
# we consider here cases in which the passed argument is DNS name
target=DNS
fi
[...]
----- CODE -----
----- CODE -----
[...]
# Variables definition
# my PID
mypid="$$"
html_tmp="/tmp/tmp_html.$mypid"
rep_tmp="/tmp/tmp_rep.$mypid"
add_uri='https://'
end_uri='/'
PORT=''
exit_code=2
regexIPv4="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
regexIPv6=".*:.*"
[...]
# Give some brain to this script. Detect yourself if we are checking an hostname, an ipv4 or an ipv6
if [[ $1 =~ $regexIPv4 ]]
then
target=ipv4
elif [[ $1 =~ $regexIPv6 ]]; then
target=ipv6
else
# we consider here cases in which the passed argument is DNS name
target=DNS
fi
[...]
----- CODE -----
bymarsteel, June 19, 2019
I added $path_uri so the script can check URL like https://www.example.com/WebService/Service.svc
# ./check_https www.example.com 443 WebService/Service.svc
# my PID
mypid="$$"
html_tmp="/tmp/tmp_html.$mypid"
rep_tmp="/tmp/tmp_rep.$mypid"
add_uri='https://'
path_uri=''
end_uri='/'
PORT=''
exit_code=2
if [ $# -lt 1 ]
then
echo "Arguments are missing! Run ./check_https IP_or_DNS port (optional) "
echo "Eg: ./check_https mywebsite.com"
echo "Eg: ./check_https ::ffff:192.168.1.1 444"
exit 1
fi
if [ $# -gt 1 ]
then
PORT=:$2
fi
# For https://www.example.com/WebService/Service.svc
# path_uri is WebService/Service.svc
if [ $# -gt 2 ]
then
path_uri=:$3
fi
# Give some brain to this script. Detect yourself if we are checking an hostname, an ipv4 or an ipv6
if ipcalc -sc4 $1
then
target=ipv4
else if ipcalc -sc6 $1
then
target=ipv6
else
# we consider here cases in which the passed argument is DNS name
target=DNS
fi
fi
if [ ! "$target" == "ipv6" ]
then
/usr/bin/wget --timeout=10 --no-check-certificate --output-document=$html_tmp -S $add_uri$1$PORT$end_uri$path_uri 2> $rep_tmp
else
/usr/bin/wget --timeout=10 --no-check-certificate --output-document=$html_tmp -S $add_uri[$1]$PORT$$end_uri$path_uri 2> $rep_tmp
fi
# ./check_https www.example.com 443 WebService/Service.svc
# my PID
mypid="$$"
html_tmp="/tmp/tmp_html.$mypid"
rep_tmp="/tmp/tmp_rep.$mypid"
add_uri='https://'
path_uri=''
end_uri='/'
PORT=''
exit_code=2
if [ $# -lt 1 ]
then
echo "Arguments are missing! Run ./check_https IP_or_DNS port (optional) "
echo "Eg: ./check_https mywebsite.com"
echo "Eg: ./check_https ::ffff:192.168.1.1 444"
exit 1
fi
if [ $# -gt 1 ]
then
PORT=:$2
fi
# For https://www.example.com/WebService/Service.svc
# path_uri is WebService/Service.svc
if [ $# -gt 2 ]
then
path_uri=:$3
fi
# Give some brain to this script. Detect yourself if we are checking an hostname, an ipv4 or an ipv6
if ipcalc -sc4 $1
then
target=ipv4
else if ipcalc -sc6 $1
then
target=ipv6
else
# we consider here cases in which the passed argument is DNS name
target=DNS
fi
fi
if [ ! "$target" == "ipv6" ]
then
/usr/bin/wget --timeout=10 --no-check-certificate --output-document=$html_tmp -S $add_uri$1$PORT$end_uri$path_uri 2> $rep_tmp
else
/usr/bin/wget --timeout=10 --no-check-certificate --output-document=$html_tmp -S $add_uri[$1]$PORT$$end_uri$path_uri 2> $rep_tmp
fi
byeugene.tsuno, August 31, 2018
Should check ipcalc is installed.
Should redirect ipcal in error to test ip addres:
if ipcalc -sc4 $1 > /dev/null 2>&1
not
if ipcacl -sc1 $1
Should redirect ipcal in error to test ip addres:
if ipcalc -sc4 $1 > /dev/null 2>&1
not
if ipcacl -sc1 $1
byjkegaly, April 2, 2018
Works very well, just took the check_http command and modified so it would work properly!
Works good with IPv4 addresses.
With IPv6 addresses i get the error:
Generic error code.
With IPv6 addresses i get the error:
Generic error code.
Owner's reply
Hi RogerSik,
i submitted a new version with IPv6 support!