Podzielił, u mnie działa to tak:
- serwer poczty mam u siebie
- poczta jest maildir
- skrypt sprawdza, czy coś pojawiło się w inbox
- jak jest, zabiera się za pierwszego @, zabiera z niego i umieszcza w jednej linii info o przelewach
- zmiana zawartości na txt
- poskładanie tego w zrozumiałą zawartość dla mysql
- u mnie przenosi @ do innej skrzynki
- pewnie nie jest wykonane za elegancko, ale działa mi od 4-5? lat, więc nie poprawiam, jest jak jest ;-)
numiałem się na potrzebę chwili, wiedząc czego chcę i mając o tym blade pojęcie, przydało by się dopisać weryfikację
kto @ nadesłał ale mi się nie chciało. Gdyby to ktoś poprawił - chętnie przytulę.
pliki: parser ; awk-sql ; base64 ; sed

parser:
#!/bin/bash
set -x
cd /parserBZWBK
HOMEBZWBK=/parserBZWBK
INBOXBZWBK=/mail/virtual/bartpl.com/bzwbk/cur
INBOXBZWBK2=/mail/virtual/bartpl.com/bzwbk/new
TRASHBZWBK=/mail/virtual/bartpl.com/bzwbk/.atam/cur

while ls $INBOXBZWBK/*
do
    POCZTA=`ls /mail/virtual/bartpl.com/bzwbk/cur | sed -n '1p'`
    echo $POCZTA >> $HOMEBZWBK/history.log
    $HOMEBZWBK/sed $INBOXBZWBK/$POCZTA > $HOMEBZWBK/temp
    cat $HOMEBZWBK/temp | awk -F " " '{ORS=""; print $1}' > $HOMEBZWBK/temp2
    base64 -d /parserBZWBK/temp2 | sed 's/.$//' | sed '/^[A-Z]/d' > $HOMEBZWBK/temp3
    sleep 1
    cat $HOMEBZWBK/temp3 | awk -F "|" -f $HOMEBZWBK/awk-sql
    sleep 1
    mysql -ulms -ppass lms < $HOMEBZWBK/bzwbk.sql
    date >> $HOMEBZWBK/work.log
    mv $INBOXBZWBK/$POCZTA $TRASHBZWBK/
    echo "jeden cur zrobiony"
done

while ls $INBOXBZWBK2/*
do
    POCZTA=`ls /mail/virtual/bartpl.com/bzwbk/new | sed -n '1p'`
    echo $POCZTA >> $HOMEBZWBK/history.log
    $HOMEBZWBK/sed $INBOXBZWBK2/$POCZTA > $HOMEBZWBK/temp
    cat $HOMEBZWBK/temp | awk -F " " '{ORS=""; print $1}' > $HOMEBZWBK/temp2
    base64 -d /parserBZWBK/temp2 | sed 's/.$//' | sed '/^[A-Z]/d' > $HOMEBZWBK/temp3
    sleep 1
    cat $HOMEBZWBK/temp3 | awk -F "|" -f $HOMEBZWBK/awk-sql
    sleep 1
    mysql -ulms -ppass lms < $HOMEBZWBK/bzwbk.sql
    date >> $HOMEBZWBK/work.log
    mv $INBOXBZWBK2/$POCZTA $TRASHBZWBK/
    echo "jeden new zrobiony"
done

awk-sql:
{
  id=$1;
  data=systime();
  cash=$3;
  platnik=$4;
  platnikid=substr($5,15);
  opis=$6;
  hash=$7;
  closed=$8;
  sourceid=$9;
  sourcefileid=$10;
  {
    print "insert into cashimport values('"id"', '"data"', '"cash"', 'platnik', 'opis-usuniety-bo-ludzie-czasem-pisza-dziwne-rzeczy', '"platnikid"', '"hash"', '"closed"', NULL, NULL);" > "./bzwbk.sql";
  }
}

base64:
#!/bin/bash
python -c "print '$1'.decode('base64')" | sed '1,1d' | sed '$d' | sed '$d'

sed:
#!/bin/bash
sed -n -e '/Content-Disposition/,/NextPart/p' $1 | sed '1,/^$/d' | sed '/^$/q'






W dniu 2013-12-18 08:46, Skynet Multimedia pisze:
Hejka

a podzieliłbyś się tym skryptem ? :)



W dniu 17 grudnia 2013 22:31 użytkownik Marcin Kazancow <marcin@bartpl.com> napisał:
W dniu 2013-12-17 21:05, Skynet Multimedia pisze:

witajcie,

od paru dni męczę się ze skryptem do automatycznego pobierania z maila płatności wysyłane przez BZWBK, temat był poruszany wielokrotnie ale nic mi z tego bo cały czas wywala mi jakieś błędy .... niby odznacza maila jako przeczytanego ale nic poza tym

root@supermicro:~# php /etc/lms/import.php
<p>12161175550001.txt</p>Nie dodano wpisu : Cannot add or update a child row: a foreign key constraint fails (`lms`.`cashimport`, CONSTRAINT `cashimport_ibfk_2` FOREIGN KEY (`sourceid`) REFERENCES `cashsources` (`id`) ON DELETE SET NULL ON

Jak by co, to ja mam to zrobione w BASH-u
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms



--
Pozdrawiam
Daniel Zachert