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.