Передача нескольких строк ввода stdin в интерактивную программу командной строки Java, неинтерактивно

#java #linux #testing #unix

#java #linux #тестирование #unix

Вопрос:

У меня есть java-программа командной строки, которая принимает пароль и проверяет его из stdin. К сожалению, модификация программы невозможна, поскольку она является частной.

Я не могу передать аргументы из командной строки unix с помощью < , поскольку в программе есть два запроса, оба запрашивают один и тот же пароль. В командной строке есть инструкции stdout, запрашивающие «Пароль» и «Пароль (проверка):».

Как я могу неинтерактивно передать пароль этой программе, чтобы ее можно было выполнить автоматически с помощью скрипта cron job / RC?

Спасибо!

Ответ №1:

Скорее всего, пароль считывается вообще не из stdin, а из /dev/tty. В этом случае вам не повезло.

Можете ли вы запустить программу, передав все входные данные, включая пароли, через stdin? Если нет, то вам не повезло.

Однако, если это сработает, вы можете сделать что-то вроде

 (echo user; echo passwd1; echo passwd1; cat) | java -jar yourCommandlineprogram.jar 
  

Комментарии:

1. Похоже, вы правы — он передает все аргументы в первое приглашение, и я также получаю исключение «stty: стандартный ввод: недопустимый аргумент»

2. Это когда он пытается установить режим noecho.

Ответ №2:

По вашему вопросу не уверен, является ли Expect приемлемым или нет.

Комментарии:

1. Это определенно вариант, но я надеялся решить проблему без необходимости устанавливать дополнительные RPM