Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   [решено] Скрипт автоответа на sh (http://forum.oszone.net/showthread.php?t=237980)

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.

Время: 22:08.
© OSzone.net 2001-