как передать значение для интерактивного jar-файла в сценарии оболочки

Предположим, здесь у вас есть почта для destination@example.net, которая должна быть доставлена.

Карты, указанные в virtual_alias_domains, ищутся с использованием части домена (example.net) в качестве ключа, ожидается, что вернется что-нибудь, если это виртуальный домен алиаса, иначе ничего, т.е. этот ключ должен быть неопределен. Карты в virtual_alias_maps ищутся с использованием полного адреса (destination@example.net) в качестве ключа, ожидается, что будет возвращен переписанный адрес.

Это означает, что вы можете использовать один файл карты для обоих поисков, как и простую хэш-карту /etc/postfix/virtual, описанную в virtual (5). В конфигурации Postfix по умолчанию (virtual_alias_domains = $virtual_alias_maps) предполагается карта такого смешанного стиля.

example.net OK
aaa@example.net hijacked@example.com
bbb@example.net hijacked@example.com

Важные правила этих поисков:

  • virtual_alias_maps ищутся рекурсивно. Если он возвращает тот же адрес, что и ключ, то этот адрес используется.
  • Если конечный переписанный адрес, возвращенный virtual_alias_maps, все еще находится в virtual_alias_domains, то поиск считается неудачным (User unknown in virtual alias table). Это, кажется, не документировано явно, я узнал из этой темы.

Поэтому ваша первая regexp карта (/^.+$/ hijacked@example.com) и конфигурация проблематичны, потому что карта соответствует всему, поэтому hijacked@example.com все еще находится в virtual_alias_domains и получает отказ.

Вы можете избежать этого, не указывая ничего в virtual_alias_domains, или использовать другую regexp карту, которая не соответствует ни одной доменной строке (/^.+@.+$/ hijacked@example.com).

Но ни один из этих вариантов не кажется мне правильной конфигурацией, а лишь неинтуитивным обходным решением. Думаю, для вашей цели есть более подходящее решение.

2
30.04.2018, 16:01
1 ответ

Когда вы говорите, что он принимает ввод в интерактивном режиме, это означает, что он читает из stdin. Мы можем воспроизвести это, повторив ввод вstdin:

процесса.
echo "D" | java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive

Обратите внимание, что echoавтоматически заканчивается символом новой строки.

Если вам нужны дополнительные данные, вы можете:

echo -e "D\n<next_input>\n<next_input>" |...

Флаг -eпозволяет интерпретировать управляющие последовательности, такие как \n.

1
27.01.2020, 22:32

Теги

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