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
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 ;)
This post received a 1.6% upvote from @randowhale thanks to @fervi! For more information, click here!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit