7. Możliwości poszerzania funkcjonalności programu przez
uzupełnianie go własnymi skryptami, np. pisanymi w Perl-u.
7.1. Skrypty "billing abonentów sieci blokowej".
Znakomitym przykładem może być zastosowanie Smabiego do
prowadzenia rozliczeń sieci blokowej lub podobnej - dzięki tak
uzupełnionemu pakietowi (w pełni funkcjonalne - WYPRÓBOWANE -
przykłady skryptów załączone w pakiecie) administrator sieci
nie tylko ma ułatwioną "biurową stronę" swojej pracy, ale także
wszelkie odłączenia od sieci osób zalegających z płatnościami
oraz załączenia powrotne, po uregulowaniu rachunku, dokonywane są
w pełni automatycznie.
Idea rozwiązania
Udostępnione przez nas w pakiecie dwa skrypty Perl-owe:
blokujący dostęp (zablokuj.pl) oraz znoszący blokadę
(odblokuj.pl) przygotowane są pod kątem najpowszechniej
stosowanej przez operatorów sieci blokowych metody, tj.
przyporządkowania adresowi IP adresu MAC karty sieciowej,
i zamieszczenie listy par takich adresów w pliku, najczęściej
po prostu o nazwie /etc/hosts.arp, będącym źródłem danych dla ARP.
Dotychczas, celem odcięcia niesolidnego klienta należało
dokonywać takich manipulacji "ręcznie" - tj. najpierw sprawdzić
stan rozliczeń, ustalić adres IP przyporządkowany "pacjentowi",
dokonać odpowiednich zmian w /etc/hosts.arp, restart daemona.
Wariant proponowany przez nas upraszcza tę procedurę do
niezbędnego minimum: wystarczy jedynie na bieżąco, w miarę
spływu należności, "odhaczać" w bazie danych fakt ich zapłaty -
reszta dzieje się sama! Cały dowcip polega na tym, iż
śledzeniem stanu bazy (i odpowiednią reakcją) zajmie się od tej
pory wspomniana powyżej para skryptów: skrypt blokujący dostęp,
który należałoby dopisać do cron-a w celu uruchamiania go raz
w miesiącu (np. 20-go każdego miesiąca), po przekroczeniu
ostatecznego terminu zapłaty, oraz skrypt znoszący blokadę,
uruchamiany codziennie np. późnym popołudniem (powiedzmy:
każdego dnia o 19-tej), kontrolujący odnotowanie w bazie faktu
uregulowania należności - i w takim przypadku przywracający
dostęp do Sieci.
Instalacja
Instalacja jest elementarnie prosta, i zajmuje ok. 5 minut:
bezpośrednio na serwerze dostępowym instalujemy skrypty,
i dopisujemy do cron-a czas ich wykonywania np. o czasie
zaproponowanym powyżej. Skrypty wymagają wpisania w ich części
konfiguracyjnej minimalnej ilości parametrów kierujących ich
działaniem - przykładowo:
- $odbiorca = hostmaster\@siec.blokowa.pl - adres, na który
zostanie wysłany raport po wykonaniu skryptu
- $katalog = /etc - katalog zawierający plik hosts.arp
(potrzebne będzie prawo zapisu do niego!)
- $arprestart = /etc/rc.d/ip_arp restart - sekwencja restartu
ARP-a
- $baza = sales - nazwa bazy danych klientów
- $host = biuro - nazwa komputera, utrzymującego serwer
PostgreSQL obsługujący bazę danych Smabi-ego (należy pamiętać,
że w Postgresie trzeba zezwolić na dostęp read-only root-owi
z serwera dostępowego!)
- $usluga = ethernet - hasło pozwalające zidentyfikować usługę
Bardzo istotną pozycją jest $usługa; należy tu wpisać taki
fragment nazwy usługi, polegającej na udostępnianiu Internetu
w ramach sieci blokowej, żeby nie mogła zajść możliwość pomylenia
przez skrypt tej usługi z inną (firma może przecież realizować
rozmaite stałe zlecenia - chodzi o to, by skrypt kontrolował
tylko te "dostępowe"). Jeśli naszą usługę opisujemy na fakturach
jako "Dostęp do Internetu po ethernecie", pole $usluga może mieć
po prostu wartość "etherne" (jeśli to słowo nie występuje
w nazwie żadnej innej usługi naszego cennika). Uwaga: "etherne",
a nie "ethernet" - bo w nazwie usługi słowo "ethernet" odmieniono!
;) Zawartość tego pola niekoniecznie musi stanowić jedno słowo -
może również składać się z fragmentu zdania. Uwaga: skrypty
wymagają instalacji na serwerze, gdzie są zainstalowane,
oczywiście Perl-a, i pakietu Postgres-perl!
Wskazówki co do zawartości bazy danych.
Tylko dwie:
- W polu "uwagi" rekordu danych klienta, który jest abonentem
usługi dostępowej, należy wpisać MAC-adres jego karty sieciowej.
Adres może figurować tam razem z innymi uwagami, byle tylko
oddzielony był od reszty tekstu spacjami z obu stron, oraz
winien być zapisany w standardowej notacji hexadecymalnej,
z dwukropkiem jako separatorem, np 00:00:1C:E3:D4:20
- Jeśli klient jest stałym odbiorcą całego pakietu usług
(np. dostęp po ethernecie, ale i skrzynka pocztowa, serwis
techniczny itd.), to w wyszczególnieniu stałych zleceń,
jakie złożył u nas klient, omawiana usługa dostępowa winna
się znaleźć na pierwszej lub drugiej pozycji listy - bo
tylko tam skrypt będzie jej szukał
Dzięki wpisaniu MAC-adresu karty sieciowej danego klienta w polu "uwagi"
jego rekordu w bazie danych, będzie on "widoczny" dla skryptu śledzącego
rozliczenia abonentów sieci blokowej.
Jak widać z powyższego, jeśli chcemy jakiegoś klienta wyłączyć spod
kontroli automatu, wystarczy po prostu nie podawać w polu "uwagi"
adresu MAC jego karty sieciowej.
Ot i wszystko! Podsumujmy zatem:
Zalety powyżej opisanego rozwiązania:
- Ograniczenie czasu przeznaczanego na kontrolę rozliczeń
do niezbędnego minimum
- Znaczne uproszczenie czynności administracyjnych
- Integracja w ramach jednego pakietu obsługi sprzedaży...
- ...jak również w ramach jednego systemu operacyjnego (wszystko
pod Linuxem!)
- Prostota i elastyczność konfiguracji
- Niezawodność działania
Wady powyżej opisanego rozwiązania:
- Może jedna: skrypty w dostarczonej postaci odwołują się do daty
sprzedaży usługi w postaci "miesiąc rok" (np. "04.2005"), i w
przypadku stosowania pełnej daty (np. "02.04.2005") należy odpowiednio
zmodyfikować wiersze skryptów sprawdzające datę sprzedaży
(można także weryfikować datę wystawienia faktury)
Do zalet możemy dodać jeszcze jedną, o charakterze bardziej
psychologicznym - co nie znaczy, że błahym: administrator
serwera nie występuje więcej w roli "złośliwca" blokującego
komuś dostęp z powodu niepopłaconych rachunków (wszak dostęp
"blokuje się sam" - nie wymaga akcji ze strony administratora) -
przeciwnie, admin awansuje tu do roli dobroczyńcy, który na
grzeczną i uprzejmą prośbę może (kto wie?) ten dostęp przywrócić
"ręcznie" nawet przed uregulowaniem przez "spóźnialskiego"
należności... ;)
Poprzednia strona |
Następna strona |
Spis treści
Strona główna serwisu programu