Этот скрипт заточен под конкретный формат сообщений, получаемых от моей Циски. В теме письма есть поле 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
#!/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