Andrei Posted April 19, 2011 Posted April 19, 2011 Есть некий текстовый файл например t.txt вида user1 10 user1@mail.ru 11 user2 20 user2@mail.ru 21 user3 30 user3@mail.ru 31 user4 40 user4@mail.ru 41 скрипт-заготовка, который будет запускаться по крону: awk '{a= "Ваша учетная запись: " $1 ". Баланс вашей учетной записи менее " $4 " рублей и составляет " $2 " рублей."; print a '} t.txt нормально отрабатывает, выдавая на выходе: Ваша учетная запись: user1. Баланс вашей учетной записи менее 11 рублей и составляет 10 рублей. Ваша учетная запись: user2. Баланс вашей учетной записи менее 21 рублей и составляет 20 рублей. Ваша учетная запись: user3. Баланс вашей учетной записи менее 31 рублей и составляет 30 рублей. Ваша учетная запись: user4. Баланс вашей учетной записи менее 41 рублей и составляет 40 рублей. Но как теперь каждую строку отправить на соответствующий e-mail, указанный с строке файла t.txt третьим параметром? Казалось бы так: awk '{a= "Ваша учетная запись: " $1 ". Баланс вашей учетной записи менее " $4 " рублей и составляет " $2 " рублей."; mail $3 a '} t.txt но скрипт отрабатывает молча и на почту ничего не уходит. :( В mail.info, mail.err, mail.log - тишина. Заклинило - никак не могу понять где ошибка. Вставить ник Quote
vlad11 Posted April 19, 2011 Posted April 19, 2011 (edited) но скрипт отрабатывает молча и на почту ничего не уходит. :( В mail.info, mail.err, mail.log - тишина. Заклинило - никак не могу понять где ошибка. В скрипте пишите полные пути к бинарникам. Edited April 19, 2011 by vlad11 Вставить ник Quote
Andrei Posted April 20, 2011 Author Posted April 20, 2011 Краткость, конечно, сестра таланта. :) К каким бинарникам? К mail ? Так из командной строки работает, например так: echo "billing message" |mail bla-bla@mail.ru -a "Content-Type: text/plain; charset=utf-8" А из скрипта не хочет. Вставить ник Quote
jab Posted April 20, 2011 Posted April 20, 2011 Весьма странное желание обойтись в awk без функции system. Вставить ник Quote
Andrei Posted April 20, 2011 Author Posted April 20, 2011 Весьма странное желание обойтись в awk без функции system. Видимо мысль настолько тонка, что я ее не увидел. Поясните? Вставить ник Quote
vlad11 Posted April 20, 2011 Posted April 20, 2011 К каким бинарникам? К mail ? Так из командной строки работает, например так: echo "billing message" |mail bla-bla@mail.ru -a "Content-Type: text/plain; charset=utf-8" А из скрипта не хочет. и к mail и к echo у меня man mail выдает совершенно другой синтаксис. Вставить ник Quote
jab Posted April 20, 2011 Posted April 20, 2011 Поясните? awk '{a= "echo Ваша учетная запись: " $1 ". Баланс вашей учетной записи менее " $4 " рублей и составляет " $2 " рублей."; system(a " | mail "$3) }' t.txt Вставить ник Quote
Andrei Posted April 20, 2011 Author Posted April 20, 2011 (edited) Хм... Работает. :) А почему тогда "print a" работает без всяких system? Пытаюсь еще вставить в эту конструкцию тюнинг хедера отправляемого письма: -a "Content-Type: text/plain; charset=utf-8" -a "Reply-To: <root@bla-bal.ru>" -s "Warning" и опять ни фига не выходит. :( Куда ее тут вставить? Если так awk '{a= "echo Ваша учетная запись: " $1 ". Баланс вашей учетной записи менее " $4 " рублей и составляет " $2 " рублей."; system(a " | mail -a "Content-Type: text/plain; charset=utf-8" "$3 ) }' t.txt то awk: line 1: syntax error at or near : awk: line 1: extra ')' Провозился полчаса, так и не могу понять эти линуховые неочевидные конструкции. update - получилось вот так: awk '{a= "echo Ваша учетная запись: " $1 ". Баланс вашей учетной записи менее " $4 " рублей и составляет " $2 " рублей."; system(a " | mail -a \"Content-Type: text/plain; charset=utf-8\" "$3 ) }' t.txt Edited April 20, 2011 by Andrei Вставить ник Quote
jab Posted April 20, 2011 Posted April 20, 2011 Хм... Работает. :) А почему тогда "print a" работает без всяких system? for ANY in `ls -lR /` ; do man awk ; done Вставить ник Quote
Andrei Posted April 20, 2011 Author Posted April 20, 2011 for ANY in `ls -lR /` ; do man awk ; done Вы так не шутите. :) FAQ-ов перечитал про awk много, но system в них не встретил. Только после вашего совета нашел примеры с system. Вставить ник Quote
jab Posted April 20, 2011 Posted April 20, 2011 Ну это понятно, что линузятники Догерти и Роббинса не читают. :-))) а перла у них нету Вставить ник Quote
YuryD Posted April 21, 2011 Posted April 21, 2011 Ну это понятно, что линузятники Догерти и Роббинса не читают. :-))) а перла у них нету Не знаю как у линуха, но во фрее этих awk несколько штук, причем родной - кастрированный... Вставить ник Quote
jab Posted April 21, 2011 Posted April 21, 2011 Не знаю как у линуха, но во фрее этих awk несколько штук, причем родной - кастрированный... Да что вы говорите ? /usr/src/contrib/one-true-awk/README: This is the version of awk described in "The AWK Programming Language",by Al Aho, Brian Kernighan, and Peter Weinberger(Addison-Wesley, 1988, ISBN 0-201-07981-X). Родным считается этот ? А где остальные ? Вставить ник Quote
Andrei Posted April 21, 2011 Author Posted April 21, 2011 Ну это понятно, что линузятники Догерти и Роббинса не читают. :-))) а перла у них нету Да я вобщем-то не линузятник. Я больше по цискам, но сейчас приходится возиться с тюнингом биллинга (ЛанБиллинг), а он под линух, и скрипты разумеется тоже. Вот и ковыряю. Вставить ник Quote
jab Posted April 21, 2011 Posted April 21, 2011 Да я вобщем-то не линузятник. Я больше по цискам, но сейчас приходится возиться с тюнингом биллинга (ЛанБиллинг), а он под линух, и скрипты разумеется тоже. Вот и ковыряю. У нас завсегда так, потрешь кошатника - найдешь линузятника. :-) Вставить ник Quote
YuryD Posted April 21, 2011 Posted April 21, 2011 /usr/src/contrib/one-true-awk/README: This is the version of awk described in "The AWK Programming Language",by Al Aho, Родным считается этот ? А где остальные ? И чтой-то я gawk из портов все время ставлю ? Вставить ник Quote
littlesavage Posted April 21, 2011 Posted April 21, 2011 YuryD, я bash всегда из портов ставлю и не считаю, что родной sh - кастрированный. Скорее наоборот, bash слишком GNUтый. Там и gzip с gtar'ом есть. Вставить ник Quote
jab Posted April 21, 2011 Posted April 21, 2011 И чтой-то я gawk из портов все время ставлю ? /* сипло */ спортсмен наверное... Вставить ник Quote
martin74 Posted April 23, 2011 Posted April 23, 2011 при исполнении скрипта кроном sbin в путях нету... сколько раз сам ловился на этом... Вставить ник Quote
Andrei Posted April 23, 2011 Author Posted April 23, 2011 при исполнении скрипта кроном sbin в путях нету... сколько раз сам ловился на этом... Рабочий вариант я показал выше. Дело было не в путях. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.