While и задержка между отправкой письма

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

While и задержка между отправкой письма

Непрочитанное сообщение InventoR » 2010-09-22 17:06:53

Для отправки писем использую такую конструкцию, но проблема в том что почтарь не пропускает сразу столько писем, хотелось бы отпавлять партиями по 20шт через каждые 5сек. Помогите модифицировать содержимое скрипта.

Код: Выделить всё

#!/bin/bash

cat users.list|while read user
do
cat letter|mail -s "Warning: Mail System" $user@second.ua
done
exit
ну вот и сказочке конец, кто слушал, тот молодец.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-22 19:03:13

Код: Выделить всё

man sleep
Убей их всех! Бог потом рассортирует...

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение InventoR » 2010-09-22 21:47:03

sleep это хорошо, но простым движением его можно только через каждую строку засунуть, а как сделать через 20 строк...?
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение schizoid » 2010-09-23 11:24:27

добавьте счетчик и проверяйте его на кратность 20-ти, если да - то sleep.
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: While и задержка между отправкой письма

Непрочитанное сообщение Burner » 2010-09-23 12:05:16

число строк посчитать, через head и tail рубить файл кусками по 20

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: While и задержка между отправкой письма

Непрочитанное сообщение terminus » 2010-09-23 14:36:50

Код: Выделить всё

#!/bin/bash

COUNTER=1

cat users.list|while read user
do

 if [ $COUNTER -eq 20 ]
 then
  sleep 30
  COUNTER=1
  cat letter|mail -s "Warning: Mail System" $user@second.ua
 else
  COUNTER=$(($COUNTER + 1))
  cat letter|mail -s "Warning: Mail System" $user@second.ua
 fi

done
exit
:Search: :unknown:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение InventoR » 2010-09-24 8:44:26

Огромное спасибо, конструкция работает.
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-25 16:28:14

ещё бы на шелле писать учились - цены бы скриптам не было =)
Убей их всех! Бог потом рассортирует...

Нефиг_чем_заняться
проходил мимо

Re: While и задержка между отправкой письма

Непрочитанное сообщение Нефиг_чем_заняться » 2010-09-26 1:29:26

Alex Keda писал(а):ещё бы на шелле писать учились - цены бы скриптам не было =)
И это очень правильно сказанно, т.к. sh грузиться значительно веселей баша,
а еще когда действительно нехрен чем заняться - рожаем еще одну версию:

Код: Выделить всё

#! /bin/sh
###############################################
# User defined variables
#----------------------------------------------
#
Subject='Warning: Mail System'
domain='second.ua'

mailbatch=20    # how many mails to send before pause
pause=10        # how long to wait after sending ${mbatch} mails
#
###############################################

user=''
fusers=$1
fletter=$2

if [  ! -r "${fusers}" -o ! -r "${fletter}" ]; then
    cat <<EOH
-------------------------------------------------------------------------------
Usage:
`basename $0` File_with_users_names  File_with_letter_to_send
-------------------------------------------------------------------------------
EOH
    exit 1
fi

mbatch=${mailbatch}

while read user; do
    echo "Sending mail to: ${user}@${domain}"
    cat ${fletter} | mail -s "${Subject}" "${user}@${domain}"
    sleep 1                                                         # IMHO it is a good idea to wait here a little bit too ;)
    mbatch=$((mbatch-1))
    [ ${mbatch} -eq 0 ] && { sleep ${pause}; mbatch=${mailbatch}; } # wait before send to other users in list
done <${fusers}

exit 0


Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-26 13:40:55

это правильней вообще.
sh - есть везде. у тредстартера может стоять что угодно - и баша там может не быть в принципе.
например, список софта на сервере утверждается начальством, и поставить чё-то левое, чего нет по дефолту (на фре, аиксе и прочих) может быть невозможным.
Убей их всех! Бог потом рассортирует...

Нефиг_чем_заняться
проходил мимо

Re: While и задержка между отправкой письма

Непрочитанное сообщение Нефиг_чем_заняться » 2010-09-26 17:43:20

Alex Keda писал(а):это правильней вообще.
sh - есть везде. у тредстартера может стоять что угодно - и баша там может не быть в принципе.
Согласен на все 100% !
Alex Keda писал(а):например, список софта на сервере утверждается начальством, и поставить чё-то левое, чего нет по дефолту (на фре, аиксе и прочих) может быть невозможным.
На баше программить конечно значительно удобней и возможностей у него на много больше, без которых иногда просто не обойтись, но есть одно большое "НО" - у него встроенны сетевые возможности, что очень любят кракеры. Нафиг не нужны нет-кэты и прочие средства чтобы контролировать спровацированную машину - достаточно одного баша и никаких следов инородных файлов. Поэтому если уж я его (баша) и юзаю, то только как статически скомпилированный, независимый файл, и чтобы духа его не было в /etc/shells и права на него только r-x------

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-26 19:40:15

во фре все стартовые скрипты на sh написаны
покажите мне чё-то своё, боле сложное, что нелья на sh сделать и понадобился bash?
Убей их всех! Бог потом рассортирует...

Нефиг_чем_заняться
проходил мимо

Re: While и задержка между отправкой письма

Непрочитанное сообщение Нефиг_чем_заняться » 2010-09-27 1:35:15

Alex Keda писал(а):во фре все стартовые скрипты на sh написаны
покажите мне чё-то своё, боле сложное, что нелья на sh сделать и понадобился bash?
Эмм... ИМХО, это больше вопрос типа - "Ну скажи мне, - куда я не могу доехать на Москвиче-412, где твоя Тойота может проехать? "
Можно конечно и на Москвиче, но на Тойоте все таки - быстрей, приятней и надежней(Хотя надо акцептать навороченность Тойоты и возможности сбоя электроники, где Москвич однозначно выиграет :) ).
(Это не значит, что я - приверженец баша :) )

ОК, самый простой пример - массивы(arrays) и попутно с ними readarray, ВСТРОЕННАЯ(т.е. без дерганья внешних программ) поддержка перловских регулярок в условиях(да и сами условные выражения побогаче шелловских) и при работе с переменными типа ${parameter/pattern/string}, непосредственная сетевая поддержка, не дергаются внешние программы ( тот же [ или sed, awk, grep, printf, getopts...), т.к. интерпретатор уже имеет эти функции в составе баша, конструкция select - которая сокращает написание простеньких менюшек до безобразия, С-шный for тоже очень полезная фича, очень богатые переменные самого баша, поддержка "Here Strings" ака <<<string, про арифметику я просто молчу, в баше она значительно проще чем дергать опять же внешнюю expr, которая тоже отстает от арифметики баша(я понимаю, что можно еще и bc юзать, но опять же - это внешняя программа), возможность жесткой типизации переменных, а ключик , который помогает разобраться в багах скриптов....

Ну, это первое, что на ум пришло, вы же сами знаете, что возможностей у баша значительно больше чем у шелла.

Задачки не решаемые с помощью шелла? Ну, возьмем к примеру задачу:
Условия:
-нельзя использовать внешние программы за пределами самого шелла
-нельзя создавать никаких файлов(в том числе временных)
Проблема:
Получить коды ошибок всех программ соединенных трубами.
Т.е.:

Код: Выделить всё

# Prg1 | Prg2 | Prg3
Как узнать в чистом шелле, какую ошибку вернула программа№1 и программа№2 ? А в том же баше во общем то - запросто.

Главное достоинство шелла - его простота, маленький размер исполняемого файла и переносимость(хотя с распространенными пингвинами это тоже спорно, т.к. в ихнем хаосе-зоопарке sh может быть запросто сопоставлен как правило с dash, а то и просто с bash). Ну и как я уже говорил - секъюрность обычного шелла, не имеющего сетевой поддержки - тоже большой плюс.
Поэтому, по возможности стараемся писать на чистом шелле, если нет ограничений по баблу и времени.
Ну, а если таковые ограничения есть, то самый лучший вариант юзать iPython как шеловую оболочку, в нем есть практически все прибамбасы программирования, которые перебьют по фичам практически любую разновидность шеллов. Да и с портируемостью - самые наименьшие затраты, питон работает практически на всем где есть микропроцессоры. Э-э-э, ну а это вообще меня понесло в другую сторону :)

P.S.
Лёш, я сорри, что отвязываюсь последнии дни на вашем форуме, но командировка, блин в такой глуши, что просто волком выть хочется, хорошо что интернет и пиво есть.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-27 18:47:48

ты хто? :shock:
Убей их всех! Бог потом рассортирует...

Нефиг_чем_заняться
проходил мимо

Re: While и задержка между отправкой письма

Непрочитанное сообщение Нефиг_чем_заняться » 2010-09-27 21:48:20

Alex Keda писал(а):ты хто? :shock:
Во-во! Этот же вопрос я сегодня уже задавал сам себе глядя утром в зеркало на распухшую от пива рожу... а отражение, падла, ответило - "пьяная скотина..."
Ну а так, вообще - насиловал гуглю на тему mandatory access control во фряхе и к вам вот забрел случайно.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: While и задержка между отправкой письма

Непрочитанное сообщение Alex Keda » 2010-09-27 23:33:37

чё-то было про него с погода-год назад.
у меня руки так и не дошли.
сижу думаю - старость или лень прогрессирует...
Убей их всех! Бог потом рассортирует...

Нефиг_чем_заняться
проходил мимо

Re: While и задержка между отправкой письма

Непрочитанное сообщение Нефиг_чем_заняться » 2010-09-28 16:19:30

Alex Keda писал(а):чё-то было про него с погода-год назад.
Да мне туфталогия(на пальцах) просто нужна была, чтоб объяснить клиенту почему "чудеса" начались, после того как прошлись ugidfw-ом по их машинам.
А сам МАС шикарно расписан в хэндбуке, да и нужен он по большому счету в основном в интерпрайзах или на сверх-параноидальных серваках.
Alex Keda писал(а):сижу думаю - старость или лень прогрессирует...
Есть хорошая поговорка -"Бабе столько лет на сколько она выглядит, а мужику столько, на сколько он себя чувствует"
У нас монтажник один есть - 78 лет(он для меня - пример, когда думки начинают одолевать, что вторую половину века отматываю), так мужик нажрется виагры и еще телок в командировках снимает, а неделю назад взялся программирование осваивать и надо отдать ему должное - получается.