пятница, 26 апреля 2013 г.

Скрипт для изъятия прикрепленных файлов и выкладывания на сетевую шару (как часть сервиса факс-сервера на циске).

Этот скрипт заточен под конкретный формат сообщений, получаемых от моей Циски. В теме письма есть поле ANI=xxxxxxxx, содержащее АОН передающего факса. Файл с изображением называется scan_ddmmyyyy.tiff.

#!/usr/local/bin/bash

#Переходим в нужный почтовый ящик.
cd /var/spool/mail/domen/user/new

# Для каждого файла с расширением .ru делаем следующее.
for MailFile in $( ls *.ru ); do
    echo >> /var/log/fax.log
    date >> /var/log/fax.log
    echo MailFile=$MailFile >> /var/log/fax.log
#Берем время создания файла из вывода "ls"
    MailCreationTime=$(ls -l ls $MailFile | awk '{print $8}' | sed 's/://')
    echo MailCreationTime=$MailCreationTime >> /var/log/fax.log
#Берем ANI из поля Subject письма (оно там на фиксированной позиции)
    ANI=$(cat $MailFile | grep Subject | cut -c 47- | sed -e 's/\]//')
    echo ANI=$ANI >> /var/log/fax.log
#Берем ID письма из первого поля Received, ID нужен для уникального именования файлов. Да  и чтоб хвосты потом найти.
    ID=$(cat $MailFile | grep PCC -m 1 | awk '{print $9}')
    echo ID=$ID >> /var/log/fax.log
#Берем текущую дату. Скрипт запускается часто, нет нужды брать дату файла.
    CurrDate=`date "+%d%m%Y"`
    echo CurrDate=$CurrDate >> /var/log/fax.log
#Формируем имя будущего файла.
    FileName="$ID"_"$ANI"_"$CurrDate"_"$MailCreationTime.tiff"
    echo FileName=$FileName >> /var/log/fax.log
#Вынимаем аттачмент из письма. Одновременно пишем в ScanName имя вынутого файла.
    ScanName=`munpack $MailFile | awk '{print $1}'`
    echo ScanName=$ScanName >> /var/log/fax.log
#Проверяем по имени аттачмента скан ли это.
    if [[ $ScanName == scan_* ]]
#Если да, то переносим на windows шару. Чтобы не маунтить шару, можно использовать sambaclient.
        then mv $ScanName /mnt/$FileName
#Если нет, то начинаем следующую итерацию цикла.
        else continue
    fi
#Переносим обработанный файл в current.
    mv $MailFile /var/spool/mail/directcall.ru/abankin/cur
done
#Подметаем.
rm *
exit 0

Комментариев нет:

Отправить комментарий