Zdarzyć się może, że będziemy potrzebować staroświeckiej strony z statusem usług. Nie koniecznie będziemy zainteresowani wielkim projektem, który zarządza stanem usług czy też tworzeniem konta w serwisie świadczącym takie usługi.
Dlaczego by nie zrobić takiej strony samemu?
- Stwórzmy podstawową stronę w html-u
- Utwórzmy skrypt check.sh, który będzie odpytywać usługi
- Dodajmy skrypt do harmonogramu (cron)
- Sukces
Gdy już stworzymy nasz szablon strony w html należy skopiować statyczną część strony do skryptu check.sh i opatrzyć ją poleceniem 'echo’. Dynamiczna część będzie sprawdzać czy nasze usługi są aktywne, ale by to zrobić musimy utworzyć listę z nazwami usług oraz adresami url.
#!/bin/bash
echo '' > /var/www/status.html
echo '<html>' >> /var/www/status.html
echo '<head>' >> /var/www/status.html
echo '<title>status.example</title>' >> /var/www/status.html
echo '<body>' >> /var/www/status.html
arr[0]=blog
arr[1]=http://blog.example
arr[2]=www
arr[3]=http://www.example
p='UP'
r='DOWN'
for index in ${!arr[*]}
do
if [ $(( $index % 2)) -eq 0 ]
then
echo '<p>' >> /var/www/status.html
if curl -s --head ${arr[$index+1]} | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null
then
echo $p >> /var/www/status.html
else
echo $r >> /var/www/status.html
fi
echo ' ' >> /var/www/status.html
echo ${arr[$index]} >> /var/www/status.html
echo '</p>' >> /var/www/status.html
fi
done
echo '</div></body></html>' >> /var/www/status.html
Zakładamy, że plik /var/www/status.html jest dostępny na naszym serwerze www oraz skrypt znajduje się w lokalizacji /opt/check.sh
chmod +x /opt/check.sh
Dodajmy skrypt do cron-a:
crontab -e 0 * * * * /opt/check.sh
W ten oto sposób nasz skrypt wykonywać będzie się co godzinę aktualizując plik status.html. Podejście to daje nam przewagę nad rozwiązaniami pisanymi w php, gdyż każdorazowe uruchomienie strony nie wykonuje komendy na naszym serwerze. Interwał między odświeżeniami kontrolujemy za pomocą wpisu w cron.