bash, skrypt sprawdzający pocztę co określony okres czasu
: 14 października 2007, 22:46
Witam,
Mam następujący problem. Znalazłem kiedyś w sieci prosty skrypt sprawdzający pocztę w gmailu. Skrypt sprawdza czy są nowe wiadomości w skrzynce, wyświetla stosowne info i kończy swoją działalność. Stosowałem go z powodzeniem w duecie z conky i karambą.
Co zrobić, aby skrypt uruchamiał się co zadany okres czasu, przykładowo co 10 minut i sprawdzał pocztę? Najchętniej widziałbym rozwiązania w postaci modyfikacji skryptu. Czyli mniej więcej coś takiego że odpalam skrypt z parametrem np. ./check_gmail 600 i skrypt sprawdza pocztę co 10 minut, dopóki nie przerwę jego działania.
Oto kod skryptu:
Na chwilę obecną wymyśliłem 2 rozwiązania. Pierwsze z nich jest dość prymitywne. Polega na uruchomieniu skryptu w nieskończonej pętli;
Nie chciałbym jednak stosować tego rozwiązania. Drugi sposób jest jak na moje możliwości bardziej finezyjny. Są dwa skrypty. Pierwszy skrypt pyta a następnie zapisuje do pliku konfiguracyjnego login, haslo do gmaila oraz okres czasu co jaki ma być sprawdzana poczta.
Pytania są zadawane jeśli skrypt uruchomię z parametrem init:
Po uruchomieniu tego skryptu z parametrem start, wywoływany jest skrypt check_gmail.sh. Odbywa się to w następujący sposób:
Spodziewałem się, że check_gmail.sh będzie sobie pracował w tle, sprawdzając pocztę i wyświetlając wynik przy pomocy osd_cat. Niestety tak się nie dzieje. Walczę z tym już dość długo i szczerze mówiąc kończą mi się pomysły. Macie jakieś sugestie co do rozwiązania mojego problemu?
pozdrawiam
dawid
Mam następujący problem. Znalazłem kiedyś w sieci prosty skrypt sprawdzający pocztę w gmailu. Skrypt sprawdza czy są nowe wiadomości w skrzynce, wyświetla stosowne info i kończy swoją działalność. Stosowałem go z powodzeniem w duecie z conky i karambą.
Co zrobić, aby skrypt uruchamiał się co zadany okres czasu, przykładowo co 10 minut i sprawdzał pocztę? Najchętniej widziałbym rozwiązania w postaci modyfikacji skryptu. Czyli mniej więcej coś takiego że odpalam skrypt z parametrem np. ./check_gmail 600 i skrypt sprawdza pocztę co 10 minut, dopóki nie przerwę jego działania.
Oto kod skryptu:
Kod: Zaznacz cały
#!/bin/bash
gmail_login="login" #login do skrzyki
gmail_password="haslo" #hasło do konta
dane="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\/fullcount>.*//' 2>/dev/null)"
if [ -z "$dane" ]; then
echo "Blad polaczenia"
else
echo "Masz: $dane nowe(ych) wiadomosc(i)."
fi
Kod: Zaznacz cały
./check_gmail 600
Kod: Zaznacz cały
while [ 1=1 ]
do
#tu nastepuje sprawdzanie poczty
sleep $1
done
Pytania są zadawane jeśli skrypt uruchomię z parametrem init:
Kod: Zaznacz cały
./poczta.sh init
Kod: Zaznacz cały
...
do_start() {
./check_gmail.sh $login $haslo $czas &
}
...
#dalsza część skryptu
pozdrawiam
dawid