Как сгенерировать список случайных целых чисел, разделенных запятыми

Правильный способ - использовать ACL exim'а вместо фильтрации.
Найдите часть конфига, начинающуюся с такой строчки:

acl_rcpt:

Ваш конфиг может быть другим, но должны присутствовать acl, rcpt и точка с запятой. Затем должен быть ряд блоков, начиная с принятия, отказа, требования и других глаголов.
Вы должны добавить новый блок:

deny condition = ${lookup{$sender_address}nwildlsearch{/path/black.list}{yes}} 
       message = Not that time, sorry.

Файл /path/black.list должен содержать запрещенные адреса и/или регулярные выражения, по одному на строку:

## You can block the certain sender
^some_spammer@domain\.icu
## Or everybody from some domain
^.*@domain\.icu
## Or even all top-level domain at once
^.*@.*\.icu

Здесь .— это токен PCRE, который означает any symbol, .*означает any number of any symbols, а \.означает the dot. Строго говоря, шаблон ^.*@domain\.icuозначает:

Sender address starting with any number (0..n) of any symbols,
then symbol '@', 
then 'domain' substring,
and ending with '.icu' symbols

Строка ugly_spammer_from@domain.icuбудет соответствовать этому RE.

Помните, что правила ACL применяются в том порядке, в котором они определены в файле конфигурации. Те ACL, которые вы хотите внедрить, должны быть помещены в начало определений ACL для этапа RCPT.

Перезапустить exim после реконфигурации.

2
02.04.2021, 19:33
2 ответа

Вы можете использовать paste -sдля соединения линий:

shuf -i1-10 | paste -sd, -

Здесь используется опция -iкоманды shuf для указания диапазона положительных целых чисел.

Выход seqможет быть передан в shuf:

seq 10 | shuf | paste -sd, -

Или -eдля перетасовки аргументов:

shuf -e {1..10} | paste -sd, -
12
28.04.2021, 22:54

Существует два типа списков чисел от 1 до 10. Какой из них вам нужен?

Лучший способ объяснить их — использовать аналогию:

  1. Положите в мешок 10 шаров, пронумерованных от 1 до 10. В каждый ход извлекайте по одному шарику, читайте число и не возвращайте шарик в мешок. Это генерирует список максимум из 10 номеров. В списке появятся все номера, но (принудительно )только один раз.

    Такой список будет сгенерирован командами, подобными:

    $ echo $(seq 10 | shuf) | tr " " ","
    10,7,5,2,3,9,1,4,8,6
    
    $ shuf -i1-10 | paste -sd, -
    1,9,4,6,2,8,10,5,3,7
    
  2. Положите в мешок 10 шаров, пронумерованных от 1 до 10. В каждый ход извлекайте из мешка один шар, читайте номер на нем и возвращайте шар в мешок. Список может быть бесконечным, повторение чисел может занять некоторое время.

    Такой список можно сгенерировать с помощью команды, аналогичной:

    $ shuf -n 20 -r -i1-10 | paste -sd, -
    9,9,7,8,2,8,5,5,4,9,8,6,6,6,4,10,6,6,9,7
    
7
28.04.2021, 22:54

Теги

Похожие вопросы