Nasz mikro-projekt: WebSysMon (Internetowy Monitor systemu)

in polish •  7 years ago 

PHP to moim zdaniem dobry język – pozwala robić „interaktywne” strony internetowe, tzw. Web 2.0. Za jego pomocą można tworzyć naprawdę rozwinięte projekty – od serwisów społecznościowych po sklepy internetowe.

Jedną z nisz, która powstała na tym języku to wszelkie „Internetowe systemy monitorowania stanu komputera”. Mamy serwer i co jakiś czas chcemy sprawdzić czy działa i jaki jest jego stan. Do tego zwykle używane są skrypty w PHP, które mają dużo MB kodu, wymagają wspomnianego interpretera kodu, dodatkowo trzeba mieć cały serwer WWW.

Mój mini-projekt polega na stworzeniu prostego skryptu w Bash, który za pomocą Busybox (httpd) i skryptów shellowych zrobi bardzo prostą stronę pozwalającą monitorować serwer.

1) Serwer

Serwerem tu będzie oczywiście Httpd znajdujący się w Busybox. Busybox to „szwajcarski nożyk dla komputerów” - aplikacja, która w zasadzie zastępuje setki innych aplikacji – oczywiście konsolowych.

Użyta komenda to:

busybox httpd -p 10123 -h $PWD

Oznaczająca: Busybox, uruchom applet (moduł) httpd na porcie 10123, a dane strony weź z katalogu, w którym użytkownik aktualnie się znajduje.

2) Generator treści

Httpd domyślnie działa na plikach HTML. Można co prawda dodać PHP, ale moim zdaniem nie jest to konieczne. Użyjemy skryptu Bash, który co 10 sekund będzie tworzyć nowy plik index.html z danymi. Nie jest to co prawda najlepsza metoda, ale jedyna jaką znam.

Stworzyłem prosty kod w Bashu, który używając pętli – co 10 sekund generuje nową porcję danych.

i=0

while [ $i -lt 1 ]
do
echo '<html><head><META HTTP-EQUIV="refresh" CONTENT="5; URL="index.html"></head><body>' > index.html
screenfetch -N -n -w -p >> index.html
echo '<br>' >> index.html
sensors >> index.html
date >> index.html
sed -e 's/$/<br>/' -i index.html
echo "</body></html>" >> index.html
sleep 10s
done

Co to robi? Inicjuje zmienną i na 0. Pętla While będzie wykonywać kod zawarty w niej dopóki i będzie równy 1 (czyli nigdy). Używając screenfetch, free i date zapisze dane do pliku index.html. Dane te to np. procesor w komputerze, temperatura procesora, aktualna data, wykorzystanie RAMu itd.

Sed doda do każdej linijki na końcu znacznik
- czyli znacznik nowej linii.
Sleep 10s uśpi działanie programu na 10 sekund.

3) Łączenie

Osobiście stworzyłem 3 pliki:

  • Jeden, który odpala cały serwer i generator
busybox httpd -p 10123 -h $PWD
busybox sh $PWD/generator.sh
  • Sam generator
    Pokazany powyżej :)

  • Wyłączenie serwera i generatora

killall -9 busybox

4) Działanie

screen.png

Jest to co prawda prosta strona i przejrzysta. Możemy używać również kodu działającego po stronie klienta (i tak zrobimy w następnym artykule) i upiększymy nasz skrypt używając Bootstrapa.

Strona działa bardzo dobrze, odświeża się „na wszelki wypadek” co 5 sekund, a dane aktualizuje co 10. Można to oczywiście zmienić, jak ktoś chce ;)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

This post received a 1.6% upvote from @randowhale thanks to @fervi! For more information, click here!