tarasov.evgeny |
05-07-2012 15:43 1946479 |
Скрипт автоответа на sh
Задача:
Каждый день утром проверять объем файла и в случае превышения размера отправлять письмо сотруднику и в группу админов с текстом:
"ААА! Я лопну!!!"
Сейчас у меня есть только файл со списком граждан, которым нужно отправить сообщение. Этот список создается в файле, к концу файла прикрепляется стандартное сообщение из другого файла и отправляется админам. Затем файл удаляется.
Код:
cd/var/mail/
find . -size +20M | awk ‘{print substr($0,3,25)}’ > /etc/ipfw/temp_auto
cd /etc/ipfw
cat temp_auto auto_answer_ru | mail -s “Test” admin
rm /etc/ipfw/temp_auto
Как мне по строчно обработать этот файл - одна строка один адрес почты.
Содержимое файла temp_auto
Код:
nikolay.ivanov
petr.sidorov
Можно ли это сделать без создания файла и последующего его удаления?
|
tarasov.evgeny |
05-07-2012 17:29 1946584 |
Код:
cd/var/mail/
find . -size +20M | awk ‘{print substr($0,3,25)}’ > /etc/ipfw/temp_auto
cd /etc/ipfw
for i in $( cat temp_auto ); do
echo "Уважаемый(ая), $i. Ваш почтовый адрес бла бла бла..." | mail -s "AAA. Я лопну!!!!" $i
done
rm /etc/ipfw/temp_auto
Вопрос про не создания файла, пока актуально
|
zeroka_no_onna |
06-07-2012 01:33 1946842 |
Так вместо cat temp_auto и поставь find|awk (естественно, без перенаправления в файл)
|
tarasov.evgeny |
06-07-2012 10:39 1946970 |
zeroka_no_onna,
А как добавить проверку if else?
вот так коряво я пытался сделать проверку на осутствие файлов. Не работает конечно же.
Код:
cd /var/mail
i=find . -size +20M | awk '{print substr($0,3,25)}' | wc -l'
while [$i -gt 0]
do
for a in $(find . -size +20M | awk '{print substr($0,3,25)}' )
echo "Hello, $a!!!" | mail admin
done
done
Как можно результат выполнения команды присвоить переменной?
|
zeroka_no_onna |
06-07-2012 12:33 1947022 |
Цитата:
проверку на осутствие файлов.
|
Зачем?find же, он ничего не выведет если файла не будет.
Цитата:
Как можно результат выполнения команды присвоить переменной?
|
Почти так, как сделано.Cм. ниже.
А вобще awk для простых задач лучше не использовать, он относительно "тяжёл".Возможно при помощи cut/sed лучше выделить нужную часть http://www.starlink.rl.ac.uk/docs/sc4.htx/node38.html
Или даже просто возможностями шелла(да и заодно решится это одним вызовом есно)
Код:
for a in $(find . -size +10k); do
#Вот присвоение переменной результата команды
NAME=$(echo $a|awk '{print substr($0,3,25)}')
echo "Hello, $NAME!!!"
#Вот без всяких аваков и прочих ненужных усложнений
echo "Hello, ${a#./}!!!"
done
|
Время: 22:08.
© OSzone.net 2001-