Esimerkin vuoksi taas hiukan akuankan kiroilua, eli Perliiii!
#!/usr/bin/perl
# pop3up :: raimo 050806
#
# tallenna tiedostoksi: /usr/bin/pop3up (sudo vaaditaan)
# sudo chmod 755 /usr/bin/pop3up
#
# aseta ASETUKSET alla (*1) tai kopioi tarvittavat ~/.pop3up.conf tiedostoon
# käynnistä: pop3up
# pysäytä: pop3up stop
#
# zenity tarvitaan, asenna jos ei ole:
# sudo apt-get install zenity
#
# Jos Net::POP3 ei toimi/motkottaa, asenna libnet-perl:
# sudo apt-get install libnet-perl
# manuaali: http://search.cpan.org/~gbarr/libnet-1.19/Net/POP3.pm
use strict;
use Net::POP3;
my $home = $ENV{"HOME"};
# -------- ASETUKSET --------- # *1
our $host = "maili.serveri.no"; # mailiserverin URL
our $user = "tunnus"; # käyttäjätunnus
our $pssw = "salasana"; # salasana
our $int = 15; # tarkistusintervalli minuuteissa
# ---------------------------- #
do "$home/.pop3up.conf" if -e "$home/.pop3up.conf"; # asetukset voi olla myös kotihakemistossa
my $old;
exit print `killall pop3up` if grep/stop$/, @ARGV; # stoppaillaan kaikki nuuhkijat
exit print "pop3up [stop -h]" if grep/^-h$|help$/, @ARGV;
exit print "zenity on hukassa, asenna se, pliis!\n" if !-e "/usr/bin/zenity";
while (!-e "$home/pop3up.stop"){ # viivästetty ikuluuppi, pysäytä: touch ~/pop3up.stop tai pop3up stop
my $pop = Net::POP3->new($host, Timeout => 60) or print "Ei yhteyttä: $host\n"; # ei kuolla vaan jatketaan luuppia, josko se heräisi henkiin joskus...
if ($pop){
print "POP";
$pop -> login($user, $pssw) > 0 or die "pysäytetty, virheellinen kirjautuminen $!\n"; # nyt kuollaan, korjaa tunnukset!
my $new = $pop -> list or print "IIK! $!\n";
$pop -> quit;
if (-e "$home/.pop3.memory"){
open FILE, "< $home/.pop3.memory";
$old = <FILE>;
close FILE;
}
open FILE, "> $home/.pop3.memory";
flock FILE, 2;
print FILE $new;
close FILE;
`zenity --info --text Uusi\\ posti:\\ $host`if $new > $old; # popup-viesti, tyhjämerkit pitää erottaa \\ merkeillä
} # if $pop
sleep($int * 60);
} # while
unlink "$home/pop3up.stop" if -e "$home/pop3up.stop"; # no nysse pysäytti mut
exit 0;
Siitä sitä sitten vain kehittelemään paremmaksi tuo on hyvin yksinkertainen esimerkki vain.
Pysähtyy myös viimeistään $int ajan päästä komennolla
touch ~/pop3up.stop jos ei muuten suostu pysähtymään.
ps. kokeile if $new
!= $old; jos if $new
> $old; ei toimi oikein,
kun en tiedä mitä tuo list palauttaa kun ei ole niitä POP3 -laatikoita yhtäkään minulla.
e kuva:
[ylläpito on poistanut liitteen]