Dioda sprawdzania wiadomości e-mail w laptopie ASUS

Slackware FAQ - czyli baza pytań i odpowiedzi.

Moderatorzy: Moderatorzy, Administratorzy

ODPOWIEDZ
Awatar użytkownika
filipcynarski
Użytkownik
Posty: 41
Rejestracja: 2005-10-29, 00:31
Lokalizacja: Inowrocław

Dioda sprawdzania wiadomości e-mail w laptopie ASUS

Post autor: filipcynarski »

Kod: Zaznacz cały

1. Wstęp 
2. Trudne początki
3. Fetchmail
   3a. Konfiguracja fetchmaila.
4. Krok kolejny tworzymy odpowiednie pliki i katalogi. 
   4b. Plik stat

   4c. Crontab
   4d. Napiszmy skrypt w Bashu obsługujący fetcha.
   4e. Program w Perlu.
5. Automatyzacja 
6. Koniec

1. Wstęp

Kolejnym tematem moich "sprytnych" rozwiązań związanych z pełnym wykorzystaniem zasobów laptopa ASUS z serii A3L będzie sprawdzanie stanu poczty elektronicznej oraz sygnalizowanie nowych wiadomości poprzez zapalenie odpowiedniej diody na panelu kontrolnym laptopa.

Ciekawe jest to, iż dioda ta nie jest domyślnie wykorzystywana pod Windowsem. Należy zainstalować odpowiedni program. Moim zdaniem strasznie ubogi, który tylko działa dla Outlooka :? A na dodatek zapala diodę po ściągnięciu wiadomości z serwera na komputer. To po co nam taka sygnalizacja :? Jest to kolejny przykład na ułomność tego systemu oraz słabą wyobraźnie programistów ASUSA.

Poprawmy ich. Nie tylko w kwestii sposobu wykorzystania diody, ale co najważniejsze wyboru systemu operacyjnego :roll:

Moim celem jest wskazanie rozwiązania odpowiedniego i wygodnego, a więc do dzieła. Linux sam nas bedzie informował, czy warto włączać program pocztowy czy nie :idea:

2. Trudne początki

Do rozwiązania problemu użyjemy fetchmaila, perla, basha oraz crontaba.

3. Fetchmail

Zastanówmy się do czego będzie nam on potrzebny. Chcemy jedynie, aby zwracał wartości czy jest wiadomość czy nie. Więc czas najwyższy zająć się kwestią konfiguracji fetchmaila.

3a. Konfiguracja fetchmaila.

Mamy dwie mozliwosci. Albo skonfigurujemy sobie fetchmaila poprzez konfigurator, albo sami stworzymy plik. Ja omowie tutaj dwie możliwości.

Pierwsza konfigurator - wolniejsza i mniej pewna metoda

W konsoli wpisujemy:

#fetchmailconf

Uruchamia się nam graficzny konfigurator. Naciskamy na przycisk configure fetchmail, następnie Expert Configuration. W oknie tym dodajemy konta e-mail zaznaczając odpowiednie opcje. Pamiętając o jednym po prawej stronie u dołu okna konfiguracji experta znajduje się pole tekstowe o nazwie: Logfile w miejscu przeznaczonym na wpisanie ścieżki do pliku log proszę podać następującą lokalizację: /root/.mailnotif/stat Jeszcze jedna ważna sprawa w polu Pool Interval wartość musi się równać 0.

Tyle jeśli chodzi o graficzny tryb teraz czas na tekst.

Druga - tryb edycji pliku - szybsza metoda pewna i sprawna

Musimy w naszym katalogu domowym utworzyć plik o nazwie .fetchmailrc (pamiętaj o kropce przed nazwą). Jego zawartość dla wielu kont pocztowych powinna wyglądać następująco:

Kod: Zaznacz cały

set logfile "/root/.mailnotif/stat"
set postmaster "Filip"
set bouncemail
set no spambounce
set properties ""
poll poczta.o2.pl with proto POP3
       user 'filipcynarski' there with password 'tajemnica' is 'root' here

poll pop3.wp.pl with proto POP3
       user 'filipcynarski' there with password 'tajemnica' is 'root' here

poll poczta.interia.pl with proto POP3
       user 'filipcynarski' there with password 'tajemnica' is 'root' here

poll mail.idea.net.pl with proto POP3
       user 'filipcynarski' there with password 'tajemnica' is 'root' here
Jeśli nie działamy jako root na systemie można usunąć słowa is 'root' here.

4. Krok kolejny tworzymy odpowiednie pliki i katalogi.


4a. Utwórz katalog .mailnotif w swoim katalogu domowym.
4b. W tym nowoutworzonym katalogu stwórz pusty plik o nazwie stat
4c. Przejdź do swojego katalogu domowego utwórz nowy plik o nazwie crontab i wpisz następujące linie kodu.

Kod: Zaznacz cały

*/2 * * * *	/root/.mailnotif/./skrypt.sh
*/2 * * * *	echo "1" > /root/.mailnotif/running
Pamiętaj, że jeśli używasz innego katalogu niż root musisz zmienić nazwę root na swoją nazwę.

/2 oznacza sprawdzanie co 2 minuty. Jeśli jesteś ciekaw jak dziala crontab wpisz w goole, a znajdziesz pełno informacji jak można go wykorzystywać.

4d.Napiszmy skrypt w Bashu obsługujący fetcha. Skrypt zapisujemy w katalogu /root/.mailnotif/ jako skrypt.sh

Kod: Zaznacz cały

echo "" > /root/.mailnotif/./stat
fetchmail -c
perl /root/.mailnotif/skrypcik.pl
Pamiętaj, że jeśli używasz innego katalogu niż root musisz zmienić nazwę root na swoją nazwę.

-c - oznacza, że fetchmail ma sprawdzić czy wiadomości są na serwerze, bez ich ściągania.

4e. Program w Perlu. Program zapisujemy w katalogu /root/.mailnotif/ jako skrypcik.pl

Kod: Zaznacz cały

open(PLIK,"/root/.mailnotif/stat");
open(PLIK1,">/proc/acpi/asus/mled");

while ($scalar = <PLIK>) {
if ($scalar =~ m/message/)
{
print PLIK1 "1";
}
else
{
print PLIK1 "0";
}
}
Pamiętaj, że jeśli używasz innego katalogu niż root musisz zmienić nazwę root na swoją nazwę.

Myślę, że tutaj mogę trochę wyjaśnić. Pierwsze dwie linijki ładują do zmiennych odwołania do poszczególnych plików. Następnie uruchamiana jest pętla powtarzana aż do końca pliku. Kolejny krok to sprawdzanie każdego wiersza pliku poprzez wyrażenie regularne, czy wśród jakiegoś z kont znajduje się konto z wiadomością e-mail. Czemu message? Po skończeniu wszystkiego, gdy będzie działało podejżyj plik stat i zauważysz pewną regularność.

5. Automatyzacja

Teraz wypadaloby, aby nasz komputer sam sprawdzał za nas wiadomości i nas informował o tym. Więc do dzieła. Wykorzystamy już wcześniej przygotowany przez nas plik corntab. Piszemy w konsoli następujące polecenia:

#crontab crontab

Jeśli nie pojawią się żadne komunikaty to wszystko jest ok. Całość możemy sprawdzić wywołując polecenie:

#crontab -l

Wyświetli się lista i możemy sprawdzić, czy nasze polecenia crontab dodał.

6. Koniec

I to już koniec artykułu :idea: Mam nadzieję, że w ciekawy sposób przedstawiłem to zaganienie, które od dawna chodziło mi po głowie. Teraz i Wy możecie mieć wygodne sprawdzanie poczty. Przecież wskaźnikiem nie musi być dioda może być co innego. Jak zwykle resztę pozostawiam Waszej inwencji.

Pozdrawiam Was!

-> Filip Cynarski
Ostatnio zmieniony 2006-09-14, 22:58 przez filipcynarski, łącznie zmieniany 1 raz.
ODPOWIEDZ