borzole Napisano Sierpień 24, 2007 Zgłoszenie Share Napisano Sierpień 24, 2007 Witam, Nie mogę poradzić sobie ze skryptem, który sprawdzał by pocztę Gmail. Potem chciałem to wrzucić do conky, ale na razie same skrypty nie działają. 1. Pierwszy pomysł jest ze strony dla debiana http://debian.linux.pl/viewtopic.php?t=913...asc&start=0 #!/bin/bash gmail_login="xxx" #login do skrzyki gmail_password="yyy" #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 "Connection Error !" else echo "GMail: $dane list(ów)" fi doinstalowałem wget bo brakowało, ale przy sprawdzaniu dostaje "Connection Error !" ze skryptu. Czy ten skrypt jest poprawny dla fedory? Co zrobić żeby zadziałał? Sam skrypt miałby się uruchamiać linijką ${execi 60 ~/check_gmail.sh} w conky. 2. pomysł jest bezpośrednio ze strony conky http://conky.sourceforge.net/gmail.pl i uruchamiany przez ${exec cat ~/.gmail/.gmail_top} ...no ale puki co też nie działa. #!/usr/bin/perl # Put this in ~/.gmail/ and use "crontab -e" to add something like # "* * * * * ~/.gmail/gmail.pl > /dev/null" to run it every minute. # ${exec cat ~/.gmail/.gmail_top} shows your inbox in Conky. # Note that this was intended to be used with Gmail or any other # ssl-enabled pop3 server. # beginning of configuration # pop3 host $pop_host = "pop.gmail.com"; # pop3 username (for Gmail, I didn't have to put @gmail.com at the end) $pop_user = "user"; # pop3 password $pop_pass = "Password"; # ssl port number (995 is what Gmail uses) $ssl_port = "995"; # ssl protocol $ssl_prot = "tcp"; # number of emails to show $dis_numb = "6"; # end of configuration use Mail::POP3Client; use IO::Socket::SSL; my $socket = IO::Socket::SSL->new( PeerAddr => $pop_host, PeerPort => $ssl_port, Proto => $ssl_prot); my $pop = Mail::POP3Client->new(); $pop->User($pop_user); $pop->Pass($pop_pass); $pop->Socket($socket); $pop->Connect(); $msg_count = $pop->Count(); for ($i = $msg_count, $j = 0; $i >= $msg_count-($dis_numb-1); $i--, $j++) { foreach ( $pop->Head( $i ) ) { #/^(From|Subject):\s+/i and print $_, "\n"; if ($_ =~ m/^From:/) { ($from) = ($_ =~ m#^From: .*<(.*)>#); $from = substr($from, 0, 30); $out .= "$j = $from\n"; } } #chop $out; `echo -e "$out"> ~/.gmail/.gmail_top`; } $pop->Close(); tym razem dostaję komunikat Can't locate Mail/POP3Client.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ./gmail.pl line 31. BEGIN failed--compilation aborted at ./gmail.pl line 31. co tu trzeba doinstalować z tego perla? Czy ktoś ma pomysł jak uruchomić jeden albo drugi sposób? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
spyro Napisano Sierpień 24, 2007 Zgłoszenie Share Napisano Sierpień 24, 2007 w sposobie z wykorzystaniem perla to musisz sobie doinstalować kilka modułów z CPAN chyba, że są dostępne w repozytorium (mam gentoo więc nie wiem czy są w repozytoriach fedory, a na serwerach nie chce mi się szukać): Mail-POP3Client IO-Socket-SSL możliwe że będzie brakować jeszcze jakiś modułów brakowało ale to później wyjdzie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
#HasH# Napisano Sierpień 25, 2007 Zgłoszenie Share Napisano Sierpień 25, 2007 Z tego pierwszego skryptu sam korzystam i uruchamiam go w taki sam sposob w conky jak to opisales. Moze wpisujesz np. w miejscu loginu do skrzynki [email protected] zamiast samego "login"? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Sierpień 25, 2007 Autor Zgłoszenie Share Napisano Sierpień 25, 2007 Wielkie dzięki! Działa! To teraz dla potomności 1. Ten sposób mi nie działał. Mam podręcznik wget, ale nadal nic nie wiem. Może ktoś chciałby się pobawić http://ptm.linux.pl/man_HTML/info_pl_HTML/wget/wget_toc.html 2. Ten sposób działa! Tylko brakowało czegoś w sposobie z wykorzystaniem perla to musisz sobie doinstalować kilka modułów z CPAN chyba, że są dostępne w repozytorium ... Mail-POP3Client IO-Socket-SSL Chyba nie ma w repozytorium (mam tylko dwa: domyślne i livna) wklepałem: yum info CPAN Mail-POP3Client IO-Socket-SSL ale nic nie wyskoczyło. Znalazłem je tu: http://search.cpan.org/~sullr/IO-Socket-SSL-1.08/SSL.pm http://search.cpan.org/~sdowd/Mail-POP3Cli...7/POP3Client.pm Instalacja poszła bez problemu, więcej modułów nie było potrzebne. Teraz zgodnie z komentarzem w skrypcie wrzuciłem gmail.pl do katalogu ~/.gmail/ trzeba jeszcze w środku zmienić user i Password # pop3 username (for Gmail, I didn't have to put @gmail.com at the end) $pop_user = "user"; # pop3 password $pop_pass = "Password"; plus prawa do wykonywania. Po testowym wykonaniu w katalogu pojawił się nowy plik ~/.gmail/.gmail_top z informacją o stanie konta. Żeby skrypt się uruchamiał co jakiś czas trzeba wpisać w konsoli (cholera to Vi!! aaaaaaa instrukcja obsługi jak się tego używa) $ crontab -e i wpisać (5 oznacza co ile minut będzie sprawdzane konto, więcej tu Crontab) SHELL=/bin/sh */5 * * * * ~/.gmail/gmail.pl > /dev/null a przynajmniej ja tak zrobiłem. Nacisnąć Esc i wpisać ZZ. Sprawdzanie gotowe. Do skryptu conky trzeba dopisać linijkę ${exec cat ~/.gmail/.gmail_top} To powinno wyglądać tak jak tu na dole http://conky.sourceforge.net/conky-folding.png tylko skórka inna, bo ta jest brzydka ps. dopiero teraz zobaczyłem że skrypt pozwala sprawdzać nie tylko konta gmail. # Note that this was intended to be used with Gmail or any other # ssl-enabled pop3 server. 3. Heh jak się bawić to już na całego. tu jeszcze jeden sposób: http://forum.slackware.pl/viewtopic.php?t=9695 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Sierpień 25, 2007 Autor Zgłoszenie Share Napisano Sierpień 25, 2007 Może wpisujesz np. w miejscu loginu do skrzynki [email protected] zamiast samego "login"? nie, wpisuje samo 'login'. Nie mam pojęcia czemu nie działa, a szkoda, bo jest to o jakieś pół hektara papieru krótszy sposób. [EDIT] Znalazłem jeszcze dwa sposoby sprawdzania z pomocą skryptów: 4. Pięknie wygląda w konsoli (kolorki) mamy też więcej informacji o poszczególnych mailach http://twig.homelinux.org/files/dev/gmail.pl Niestety dla Conky trzeba pousuwać te kolorki bo sobie nieradzi i wyświetla krzaczki w miejscach gdzie kolor się zmienia. Uprościłem go do takiej postaci: #!/usr/bin/perl -w # # gmail.pl v1.0 # # Checks a GMail account's atom feed (via SSL) and formats the # results nicely in a console window # * usage: gmail.pl <username> <password> # # Required Perl modules: # * LWP::UserAgent (for fetching the atom feed) # * XML::Parser (for parsing the atom feed) # # Optional Perl module: # * DateTime::Format::ISO8601 (for formatting the date in the feed) # # If you only want to check one account, you can put the username # and password below (between the ""), and run without arguments. $username = (defined($ARGV[0])) ? $ARGV[0] : ""; $password = (defined($ARGV[1])) ? $ARGV[1] : ""; ######################################################################## if ($username eq "" || $password eq "") { die("Usage: gmail.pl <username> <password> (or you can edit the script to use one account automatically)\n"); } require LWP::UserAgent; require XML::Parser; $has_iso8601 = eval { require DateTime::Format::ISO8601; } ? 1 : 0; if ($has_iso8601) { require DateTime::Format::ISO8601; } # fetch atom feed my $browser = LWP::UserAgent->new; $browser->agent("gmail.pl/1.0"); $browser->credentials( 'mail.google.com:443', 'New mail feed', $username."\@gmail.com", $password ); unless (defined($xmlresponse = $browser->get('https://mail.google.com/mail/feed/atom'))) { die($xmlresponse->status_line, "\n"); } $xml = $xmlresponse->content; # ? (aka "...") is not defined in XML so # it's not displayed correctly. We're going to # replace it in the XML before parsing. $xml =~ s/\…/.../g; my $p = new XML::Parser(Style => 'Subs'); $p->setHandlers(Char => \&char); $line = ('-' x 78) . "\n"; $p->parse($xml); # print "\n"; # procedures to deal with various elements sub char { my (undef, $str) = @_; $char = $str;} sub title_ { my ($el) = @_; my $parent = ($el->current_element); if ($parent eq "feed") { print "" . $char }; if ($parent eq "entry") { $subj = "Subject: " . $char }; } # sub summary_ { $summ = $char;} sub issued_ { if ($has_iso8601) { my $dt = DateTime::Format::ISO8601->parse_datetime( $char ); $dt->set_time_zone("local"); $date = $dt->strftime("%B %d, %G @ %r"); } else { my @date = split(/T/,$char); $date = $date[0]." ".$date[1]; } } sub modified_ { &issued_;} sub name_ { $auth = $char;} sub email_ { $auth = $auth . " [" . $char . "]";} sub entry_ { print "From: $auth :: $date\n" . $subj . "\n" . # $summ . "\n" . $line; } sub fullcount_ { $ct = $char; if ($ct==0) { print " :: 0 messages.\n\n"; exit; } elsif ($ct==1) { print " :: " . (1) . (" new message.\n") . $line; } elsif ($ct>1) { print " :: " . ($ct) . (" new messages.\n") . $line; } } I to rozwiązanie już mnie w zupełności satysfakcjonuje. 5. Jeszcze jedno rozwiązanie, ale już mi się nie chciało go sprawdzać http://forums.gentoo.org/viewtopic-t-29183...orsmo+tips.html Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
blubla Napisano Listopad 4, 2007 Zgłoszenie Share Napisano Listopad 4, 2007 Podążam według instrukcji, lecz niestety nie działa Tzn nic się nie wyświetla w conky i nie wyskakują żadne błędy. Korzystam ze sposobu nr 2. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Listopad 4, 2007 Autor Zgłoszenie Share Napisano Listopad 4, 2007 W conky błędów ci nie wypisze raczej. Jeśli skrypt uruchomiony w konsoli nic głupiego nie wypisuje to sprawdź czy włączyłeś POP w Gmail ja tak się raz przejechałem. ps. polecam sposób 4, w 2 podaje tylko od kogo, nawet tematu wiadomości nie wyświetla Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
blubla Napisano Listopad 5, 2007 Zgłoszenie Share Napisano Listopad 5, 2007 Rzeczywiście wystarczyło włączyć obsługę POP w gmail Niestety w 2 sposobie występuje błąd ;/ Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./gmail.pl line 27. doinstalowanie pakietów liblwp2 oraz liblwp-authen-wsse-perl niepomogło. Jakie pakiety i z jakich repozytorów powinienem zainstalowac? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Listopad 5, 2007 Autor Zgłoszenie Share Napisano Listopad 5, 2007 zacznijmy od tego że perla nie znam, a fedore mam od sierpnia ale... 1. testuj na tym oryginalnym skrypcie, jak będzie ok to dopiero sprawdź na tym co okroiłem, bo może coś skopałem. 2. ten twój błąd wyjaśnia link http://www.kt.agh.edu.pl/perl-faq/Uruchamianie#2 3. pamiętam ze robiłem jakiś test w rodzaju perl -w skrypt.pl z tego linka http://www.kt.agh.edu.pl/perl-faq/Uruchamianie#8 w ogóle możesz sobie przejrzeć tę stronę całą 4. modułów perl jest tak dużo że głowa boli, w repo fedory jest dużo ale to i tak mało do instalowania jest specjalny automat i wygląda to mniej więcej tak: perl -MCPAN -e 'install LWP::UserAgent' więcej tutaj, ładnie napisane http://www.brandonhutchinson.com/installin...rl_modules.html albo tu też jakiś przykład jak to się robi http://xfce.jakilinux.org/viewtopic.php?pid=780 albo jak to mówią z palca http://search.cpan.org/~gaas/libwww-perl-5...WP/UserAgent.pm Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
blubla Napisano Listopad 5, 2007 Zgłoszenie Share Napisano Listopad 5, 2007 Ten błąd udało mi się rozwiązać poprzez zainstalowanie paczki libwww-perl, ale pojawił się nowy błąd Can't locate XML/Parser.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./gmail.pl line 28. pio:/home/rc/.gmail# aptitude reinstall libwww-perl Ten natomiast błąd udało mi się załatać instalując libxml-perl Skrypt nr 4 jest rzeczywiście lepszy od 2 Pracuje teraz nad tym żeby się to wszystko ładnie wyświetlilo w conky, póki co nic sie nie wyświetla ;/ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Listopad 6, 2007 Autor Zgłoszenie Share Napisano Listopad 6, 2007 żeby się wyświetlało w conky to mam wpis ${color}${texeci 300 /home/user/skrypty/gmail.pl} 300 oznacza co ile sekund skrypt ma się wykonać, czyli jakieś 5minut. Można to zrobić też za pomocą cron, ale tak jest szybciej, a poza tym wynik skryptu jest od razu wyświetlany na pulpicie, bez zbędnych plików. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
blubla Napisano Listopad 6, 2007 Zgłoszenie Share Napisano Listopad 6, 2007 Ok, teraz wyświetla się, lecz ta informacja rozszerza moje conky, przez co zajmuje ponad 2/3 ekranu :| maximum_width x niestety ucina wiadomość. Czy jest w conky cos takiego jak zawijanie wierszy ? ;p jak zrobić aby ten skrypt dodatkowo obsługiwał poczte o2 i interia oraz czy jest możliwość sprawdzania pare skrzynek na raz bez tworzenia/kopiowania nowych skryptów? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Listopad 6, 2007 Autor Zgłoszenie Share Napisano Listopad 6, 2007 z tego co wiem to: 1. Gmail może sprawdzać ci inne skrzynki, ja tak od dawna mam podłączone konto onet, o2, wp, gazeta.pl i dwa konta uczelniane. Koniec ze spamem, bo gmail to filtruje. Polecam to rozwiązanie. 2. Conky ma wbudowany moduł do sprawdzania zwykłych kont POP. Z Gmail był problem, bo dostęp jest przez ssl (?, port 995). Tak więc nie potrzeba skryptów do zwykłych kont. Ale jak to się robi to Ci nie powiem, bo nie próbowałem. Poszukaj w google, albo w dokumentacji Conky, to pewnie jedna linijka jest. Co do zawijania wierszy, to chyba nie , więc trzeba częściej sprawdzać pocztę, albo skorzystać z innego narzędzia yum install mail-notification , bo tak naprawdę wypisywanie maili w Conky robi się dla zabawy Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
blubla Napisano Listopad 6, 2007 Zgłoszenie Share Napisano Listopad 6, 2007 Aby ten skryp był wyświetlany prawidłowo w moim conky postanowiłem troszkę powyrzucać dla mnie zbędnych rzeczy z tego skryptu (np data jest dla mnie całkowicie zbędna). Obecnie skrypt wygląda następująco: #!/usr/bin/perl -w # # gmail.pl v1.0 # # Checks a GMail account's atom feed (via SSL) and formats the # results nicely in a console window # * usage: gmail.pl <username> <password> # # Required Perl modules: # * LWP::UserAgent (for fetching the atom feed) # * XML::Parser (for parsing the atom feed) # # If you only want to check one account, you can put the username # and password below (between the ""), and run without arguments. $username = (defined($ARGV[0])) ? $ARGV[0] : "login"; $password = (defined($ARGV[1])) ? $ARGV[1] : "haslo"; ######################################################################## if ($username eq "" || $password eq "") { die("Usage: gmail.pl <username> <password> (or you can edit the script to use one account automatically)\n"); } require LWP::UserAgent; require XML::Parser; # fetch atom feed my $browser = LWP::UserAgent->new; $browser->agent("gmail.pl/1.0"); $browser->credentials( 'mail.google.com:443', 'New mail feed', $username."\@gmail.com", $password ); unless (defined($xmlresponse = $browser->get('https://mail.google.com/mail/feed/atom'))) { die($xmlresponse->status_line, "\n"); } $xml = $xmlresponse->content; $xml =~ s/\…/.../g; my $p = new XML::Parser(Style => 'Subs'); $p->setHandlers(Char => \&char); $line = ('-' x 50) . "\n"; $p->parse($xml); # procedures to deal with various elements sub char { my (undef, $str) = @_; $char = $str;} sub title_ { my ($el) = @_; my $parent = ($el->current_element); if ($parent eq "feed") { print "" . $char }; if ($parent eq "entry") { $subj = "S: " . $char }; } sub name_ { $auth = $char;} sub email_ { $auth = $auth . " [" . $char . "]";} sub entry_ { print "F: $auth \n" . $subj . "\n" . $line; } sub fullcount_ { $ct = $char; if ($ct==0) { print "\n0 messages.\n\n"; exit; } elsif ($ct==1) { print "\n" . (1) . (" new message.\n") . $line; } elsif ($ct>1) { print "\n" . ($ct) . (" new messages.\n") . $line; } } Chciałem aby mi nie wyświetlało "Gmail - Inbox for" lecz niestety nie wiem w jakiej zmiennej jest ten text przechowywany. PS, Jakoś nie wyobrażam sobie jak ten skrypt wyglądałby dla poczty o2. Więc pozostaje tylko w Gmail ustawić aby pobierało maile z innych skrzynek Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Listopad 6, 2007 Autor Zgłoszenie Share Napisano Listopad 6, 2007 ale juz ci napisałem, że dla zwykłych kont POP nie potrzeba skryptów, Conky sam w sobie potrafi je obsłużyć, poszukaj. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się