Użycie Pythona do seryjnej konfiguracji telefonów VoIP

Użycie Pythona do seryjnej konfiguracji telefonów VoIP

Ostatnio stanąłem przed koniecznością rekonfiguracji całej armii telefonów VoIP zarządzanych serwerami Asterisk. Jakoś nie uśmiechało mi się ręcznie zmieniać ustawień, za pomocą stron www urządzeń. Okazało się, że jest to dobra okazja do poznania nowego języka programowania – Python. Oto rezultat.

Skrypty logują się przez SSH, odczytują podłączone pod serwer Asterisk agenty SIP i przeprowadzają ich rekonfigurację w bardzo prosty sposób (zmiana numeru wewnętrznego).

Zakładam, że:
– w systemie zainstalowany jest Python 2.6,
– zainstalowane jest także rozszerzenie pycurl (binder do biblioteki Curl dla Pythona),
– mamy dostęp poprzez SSH do maszyny, na której zainstalowano serwer Asterisk,
– nazwa użytkownika SIP jest równa jego numerowi wewnętrznemu oraz, że znamy hasło do konta,
– znamy login i hasło do strony pozwalającej na zarządzanie urządzeniem.
– telefony mają taki sam firmware (każda wersja ma własne formularze)

Srypt loguje się przez SSH do serwera, odczytuje listę agentów SIP, a następnie wyciąga informacje o każdym z nich, w celu sprawdzenia typu telefonu (parametr userAgent w wyniku działania komendy “sip show peer”).
Jeśli typ telefonu jest znany, tworzony jest obiekt konfiguracyjny, który loguje się do strony WWW zarządzania urządzenia i symuluje zatwierdzenie formularza. Zapytania http generowane są przy pomocy biblioteki CURL.

Teraz pozostaje zmienić konto na serwerze i gotowe…

Podejście jest bardzo naiwne i ma na celu jedynie zapoznanie się z językiem i jego mechanizmami, niemniej jednak jest skuteczne. Nic nie stoi na przeszkodzie, aby np. napisać skrypt AGI dla Asteriska, który będzie zmieniał ustawienia telefonu w odpowiedzi na założone warunki. Należy jednak pamiętać, że każdy firmware telefonu ma własny, różniący się od innych formularz konfiguracyjny i skrypt będzie działał bez poprawiania tylko z określoną wersją.

Przyzwyczajony do podejścia obiektowego wykorzystałem kilka trików języka, które umożliwiły mi np. tworzenie klas abstrakcyjnych, czy hermetyzacji obiektów.

Skrypt może konfigurować telefony AT320, Liknksys SPA921, Liknksys SPA922 oraz Thomson ST2030.

Pamiętaj, że można to traktować bardziej jako próbkę kodu czy zalążek, niż gotowe rozwiązanie.

Całość można pobrać stąd.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.