e-mail -> sms atd.

zricka at logis.cz zricka at logis.cz
Thu Oct 8 13:34:41 CEST 1998


> Nazdar,
> já používám dva skripty v ksh + awk spoutene cronem.
> smsproc 1x denně (večer) posílá zkrácenou hlavičku mailu ve formátu
> zhruba :
> cislo_mailu od_koho/den/cas/ subject :: cislo_mailu ..... :: atd.
> v maximalne 120 znaků dlouhé řádce.
> 
> smsmailproc kontroluje příchozí maily :
> 1- pokud přijde mail z meho domaciho paegasu  ihned píše příkazem
> write subject na všechny terminály kde jsem přihlášen (to víte
> manželka)
> 
> 2- pokud přijde mail z domu se subjektem LSMAIL pošle seznam mailu
> 3- pokud prijde mail se subjektem SMAIL cislo_mailu pošle
> rozkouskovany
> mail daneho cisla
> Tak dostávám informace o nových mailech, a zároveň si můžu něco nechat
> poslat "celé".
> 
> Asi to není moc pěkně napsané, určitě tam jsou spec. věci pro
> platformu
> (DYNIX)
> - problém s formátem výstupu příkazu mailx -H nebo date .. , ale svůj
> účel to plní.
> 
> smsproc:
> #!/bin/ksh
> 
> TMPFILE=/tmp/$$.mail
> 
> TZ=GMT
> UNIXUSER=honza
> SMSADR=honza at sms.paegas.cz
> SMSPROC=/user/honza/smsproc
> export UNIXUSER SMSADR SMSPROC TMPFILE
> 
> sleep 30
> 
> if /bin/mail -e
> then
> mailx -H > $TMPFILE
> cut -c3-80 $TMPFILE | nawk '
> BEGIN { maxlen = 120; n=1;
>  "echo $TMPFILE"  | getline f;
>  "echo $UNIXUSER" | getline uusr;
>  "echo $SMSPROC"  | getline smsproc;
>  "echo $SMSADR"   | getline smsu; }
> {
> mesg="";
> if (substr($2,1,16) != substr(smsu,1,16))
> {
>   for (i=8;i<NF+1;i++) mesg=mesg " " $i;
>   text1 = substr(sprintf("%s %s/%s/%s/%s::",$1,$2,$3,$6,mesg),1,
> maxlen);
>   if ((length(text)+length(text1))> maxlen)
>   { fil = f n; n++; print text > fil;
>     text = text1;
>   }
>   else
>   { text = text text1; }
> 
> }
> }
> END { fil = f n; n++; print text > fil; } '
> 
> 
> for s in `ls ${TMPFILE}?* `
> do
> #cat $s
> cat $s | mailx -s LSmail $SMSUSER
> sleep 180
> done
> rm ${TMPFILE}*
> 
> fi
> #### konec smsproc
> 
> 
> smsmailproc:
> #!/bin/ksh
> 
> TMPFILE=/tmp/$$.mail
> 
> TZ=GMT
> UNIXUSER=honza
> SMSADR=honza at sms.paegas.cz
> SMSPROC=/user/honza/smsproc
> export UNIXUSER SMSADR SMSPROC TMFILE
> 
> if /bin/mail -e 2>/dev/null
> then
> mailx -H > $TMPFILE 2>/dev/null
> if test -f $TMPFILE
> then
> cut -c3-80 $TMPFILE | nawk 'BEGIN { maxlen = 140;
>         "echo ${TMPFILE}2"  | getline tmpfile;
>         "echo $UNIXUSER" | getline uusr;
>                                     "echo $SMSPROC"  | getline
> smsproc;
>                                     "echo $SMSADR"   | getline smsu; }
> {
> maxm = $1;
> if (substr($2,1,16) == substr(smsu,1,16))
> { if ($8 == "?")
>   { printf("d %s\nq\n",$1) | "mailx -N >/dev/null";
>     cmd="mailx -s SMS_HELP " smsu ;
>     print "LSMAIL - seznam posty, SMAIL x - poslani mailu cislo x" |
> cmd;
>     continue;
>   }
>   if ($8 == "LSMAIL")
>   { printf("d %s\nq\n",$1) | "mailx -N >/dev/null";
>     system(smsproc);
>     continue;
>   }
>   if ($8 == "SMAIL" && $9 < maxm)
>   { printf("d %s\nq\n",$1) | "mailx -N >/dev/null";
>     while("echo \"p " $9 "\nx\n\" | mailx -N" | getline xline)
>     {
>       text = text " " xline;
>     }
>     l=length(text);
>     if (l>2400) l=2400;
>     for(i=1;i<l;i=i+ii)
>     {
>      if (l-i< maxlen ) ii=l-i; else  ii= maxlen ;
>      x=substr(text,i,ii);
>      print x >> tmpfile;
>     }
>     continue;
>   }
> 
>   subj= $8 " " $9 " " $10 " " $11 " " $12;
>   "date +\"%d:%H:%M\"" | getline dat;
>   split(dat,arr,":");
>   datakt=arr[1]*24*60+arr[2]*60+arr[3];
>   split($6,arr,":");
>   datpri=$5*24*60+arr[1]*60+arr[2];
> 
>   if (((datakt - datpri) > 100 && (datakt-datpri)%60==0) ||
> datakt-datpri<100)
>   {
>   while ("who -T"| getline)
>   {
>    if ($1 == uusr && $2 == "+")
>    { cmd="write " uusr " " $3 " 2>/dev/null";
>      print subj | cmd ;
>    }
>   }
>   }
> }
> } '
> 
> if test -f ${TMPFILE}2
> then
> let l=1
> while read line
> do
> echo $line | mailx -s M${l} $SMSADR
> let l=$l+1
> sleep 130
> done < $TMPFILE
> fi
> fi
> 
> rm $TMPFILE ${TMPFILE}2 2>/dev/null
> 
> fi
> ######konec smsmailproc
> 
> 
>  *-- End of Mail ----------------------------------------------------*
>  |   From   : Libor Stefek             Addr.:  LOGIS s.r.o.          |
>  |   E-mail : lstefek at logis.cz                 U Noveho sveta 286    |
>  |                                             744 11  Frenstat p.R. |
>  *-------------------------------------------------------------------*
> 




More information about the net mailing list