Hallo,
Ik heb een simpel script dat checkt of mijn webserver nog in de lucht is.
Het script werkt goed als ik het direct via de commandline aanroep.
Het geeft netjes aan of de server down is of niet (heb getest met opzettelijk webserver even offline halen en ook met nietbestaande domeinen).
Echter, zodra ik het via een CRON job laat uitvoeren, dan geeft het PING commando in het script ALTIJD een "fail", als ware de webserver down is. Maar de server is op dat moment gewoon online.
Het script wordt uitgevoerd op een locale server die gewoon de webserver kan benaderen.
Iemand enig idee hoe dat kan?
Het script (heb mijn gegevens even vervangen door example.com):
En de CRON job:
Ik heb een simpel script dat checkt of mijn webserver nog in de lucht is.
Het script werkt goed als ik het direct via de commandline aanroep.
Het geeft netjes aan of de server down is of niet (heb getest met opzettelijk webserver even offline halen en ook met nietbestaande domeinen).
Echter, zodra ik het via een CRON job laat uitvoeren, dan geeft het PING commando in het script ALTIJD een "fail", als ware de webserver down is. Maar de server is op dat moment gewoon online.
Het script wordt uitgevoerd op een locale server die gewoon de webserver kan benaderen.
Iemand enig idee hoe dat kan?
Het script (heb mijn gegevens even vervangen door example.com):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| #!/bin/bash
# -----------------------------------------------------------------
# Simple SHELL script for Linux and UNIX system monitoring with ping command
# Source: https://bash.cyberciti.biz/monitoring/monitor-windows-linux-server-with-ping-script/
# -----------------------------------------------------------------
# add ip / hostname separated by white space
HOSTS="example.nl example.com"
# email report when
SUBJECT="[ALERT] Webserver down? Ping failed for one or more domains"
EMAILID="admin@example.com"
COUNT=1
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
# echo "count is $count"
if [ "$count" != "$COUNT" ]; then
# failed
echo "Warning: Host $myHost is down (ping failed) at $(date)" | mail -s "$SUBJECT" $EMAILID
echo "Warning: Host $myHost is down!"
else
echo "OK: Host $myHost is up :)"
fi
done |
En de CRON job:
code:
1
| 5 * * * * /usr/local/sbin/pingserver.sh |
[ Voor 8% gewijzigd door js303 op 14-07-2016 11:32 ]