EKG i Bash - Automatyczna sekretarka
- Wstęp
- Co nam bedzie potrzebne?
- Zaczynamy od poczatku - konfiguracja EKG
- Piszemy skrypt
- Ogólny zarys
- Autoresponder
- Zapis do pliku
- Odczytywanie wiadomosci
- Autor
1. Wstęp
Witam.
Dzis napiszemy prosty skrypt który bedzie wykonywał zadania automatycznej sekretarki. Wszystko to bedzie oparte na Linuksowej powłoce bash i Eksperymantalnym Kliencie Gadu-Gadu.
2. Co na bedzie potrzebne?
Na pewno potrzebny bedzie nam shell lub stacja Linuksowa z dowolną dystrybucja i zainstalowana powłoka bash (w wiekszości dystrybucji jest ona domyślną powłoką).
Następnie potrzebny bedzie nam potrzebny Eksperymentalny Klient Gadu-Gadu (strona domowa: http://ekg.chmurka.net/).
I to wszystko ;)
3. Zaczynamy od poczatku - konfiguracja EKG
Eksperymentalnego Klienta Gadu-Gadu odpalamy za pomocą komendy "ekg", możemy jednak uruchomić określony profil użytkownika np. o nazwie bot. Wygląda to tak: "ekg --user=bot". Dzieki temu mozemy mieć wiele kont przy jednym programie ;)
Po pierwszym odpaleniu EKG zobaczymy komunikat o niekompletnej konfiguracji. Aby ją uzupelnic musimy podać nasz numer GG, hasło do serwera i e-mail, po czym zapisać:
"set uin numerGG" <- ustawiamy numer GG
"set password haslo" <- ustawiamy haslo
"set e-mail adres-email" <- ustawiamy adres e-mail
"save" <- zapisujemy konfiguracje
Po uzupełnieniu konfiguracji możemy połaczyć się z serwerem poprzez komende "connect".
Kilka innych komend związanych ze zmiana statusu:
"/back tresc opisu" <- zmienia status na "dostępny" z opisem "treść opisu"
"/away tresc opisu" <- zmienia status na "zaraz wracam" z opisem "treść opisu"
"/invisible tresc opisu" <- zmienia status na "niewidoczny" z opisem "treść opisu"
A teraz najważniejsza rzecz: dołączenie skryptu do programu. Wykorzystamy do tego obslugę zdarzeń w EKG, komenda:
'/on --add msg,chat * /exec --bmsg %1 /ścieżka/do/skryptu %1 "%4"'
'/on' - zarządza zdarzeniami
'--add' - dodaje zdarzenie
'msg, chat' - przy otrzymaniu wiadomości
'*' - przez dowolnego użytkownika
'/exec' - komenda, która uruchamia polecenie systemowe
'--bmsg' - wyślij wynik w jednej wiadomości
'%1'- zastąpione zostanie numerem sprawcy zdarzenia
'%4'- treść wiadomości
'/sciezka/do/skryptu' - ścieżka do naszego skryptu
4. Piszemy skrypt
I. Ogólny Zarys
Nasz bot ma wykonywać zadania automatycznej sekretarki czyli:
- napisać, że nie ma nas przy komputerze (również że wiadomość została zapisana),
- zapisać do pliku numer GG i treść wiadomości osoby która wysłała ją do nas,
- umożliwić odczytanie skrzynki wiadomości, które dostaliśmy za pomocą innego numeru GG.
II. Autoresponder
Nasz skrypt, zaczniemy od autorespondera. Utwórzmy plik "skrypt" (na przykład komenda "touch skrypt"), nadajmy mu flagę wykonywalności ("chmod +x skrypt") po czym otwórzmy go dowolnym edytorem i wpiszmy na samym początku:
#!/bin/bash
Jest to nagłówek, który informuje powłoke, przez co ma byc interpretowany (wykonywany) skrypt. Dwie linijki niżej napiszmy:
case $1 in
*)
echo "Witaj $1! Twoja wiadomość została zapisana."
;;
esac
Instrukcja "case" jest instrukcją warunkowa, która sprawdza określone warunki. W tym przypadku sprawdza wartość $1 czyli numer GG. Powyższy fragment skryptu dla każdego numeru GG wypisze tą samą wiadomość: "Witaj Numer_GG! Twoja wiadomosc zostala zapisana.". Niezbyt wyszukane, ale może służyć za prosty autoresponder.
III. Zapis do pliku
Autoresponder juz mamy, teraz potrzebujemy nam zapis do pliku. Tutaj z pomocą przyjdzie nam polecenie "eval", które stara sie wykonać dowolny tekst jako polecenie powłoki. Do zapisywania będziemy korzystać z komendy "echo" i przekierowania jej wyniku do pliku. Wpisz w konsoli:
"echo 'test'" <- wypisze na ekranie tekst "test"
"echo 'test' >> plik" <- wpisze do pliku "plik" w nowej linii tekst "test"
"echo 'test' >> plik" <- wpisze do pliku "plik" tekst "test", jednak skasuje aktualna treść pliku
Zaczynamy pisać, wykorzystamy poprzedni kod:
#!/bin/bash
case $1 in
*)
echo "Witaj $1! Twoja wiadomość została zapisana."
eval 'echo "$1 - $2" >> logi.log'
;;
esac
Teraz nasz skrypt po napisaniu informacji dla użytkownika, zapisze do pliku logi.log wiadomość w formacie "Numer GG - Treść". Dużo nam to nie daje, bo czegoś nam brak. Czego? Daty! Z pomocą przyjdzie nam polecenia date, dzięki któremu wpiszemy do pliku godzinę i dzień tygodnia. Zmodyfikowana wersja kodu to:
#!/bin/bash
case $1 in
*)
echo "Witaj $1! Twoja wiadomosc zostala zapisana."
eval 'date +%r%A >> logi.log && echo "$1 - $2" >> logi.log && echo "-------------" >> logi.log'
;;
esac
W wyniku tego otrzymamy:
Godzina Dzien_tygodnia
Numer_GG - Wiadomosc
-------------
W takiej wiadomości są czytelne, a widać, ze nasz kod znacznie się nie powiekszył.
IV. Odczytywanie wiadomosci
Czas teraz na ostatnią funkcję - odczytywanie wiadomości z wcześniej określonego numeru GG. Na początku zajmijmy sie pierwszą wersją. Kod:
#!/bin/bash
case $1 in
DowolnyNumer)
eval 'cat logi.log'
;;
*)
echo "Witaj $1! Twoja wiadomość została zapisana."
eval 'date +%r%A >> logi.log && echo "$1 - $2" >> logi.log && echo "-------------" >> logi.log'
;;
esac
Jak widać doszła nam nowa opcja z DowolnyNumer (w jego miejsce wpisz numer, z którego chcesz sprawdzić wiadomości, możesz wpisac kilka numerów rodzielajac je znakiem "|"). Dzieki niej wyświetlimy zawartość naszego pliku z logami. Osiągnęliśmy to używając komendy cat.
5. Autor
Autorem powyższego artykułu jest Kamil "elwin013" Banach.
Strona autora: http://elwin.ovh.org/ | Kontakt: elwin93(malpiszon)gmail(kropa)com
Zabrania sie kopiowanie powyższego artykułu bez wiedzy autora.
Autor nie odpowiada za żadne szkody wynikające z korzystania z treści tego artykułu.
Wszelkie prawa zastrzeżone.