2015-03-21 6 views
2

У меня возникла проблема с запуском контейнера базы данных с помощью докера. Когда двоичный файл базы данных (dblxsrv) запускается в первый раз, сначала запрашивается ключ продукта. Таким образом, пользователь должен ввести ключ мультимедийного продукта (PMC) и нажать enter (это происходит в терминале, а не в окне или sth.). Вот почему пользователю всегда нужно запустить контейнер, чтобы он мог войти в PMC.отправить ключи на терминал

Интересно, могу ли я отправить этот ключ через скрипт bash, чтобы база данных полностью запускалась (эмулировать ввод с клавиатуры).

Я думал о sth. как:

./dblxsrv 
xdotool key 'X' 
xdotool key 'X' 
xdotool key 'X' 
xdotool key 'X' 
xdotool key '-' 
xdotool key 'X' 
xdotool key 'X' 
xdotool key 'X' 
xdotool key 'X' 

Но я предполагаю, что это не будет работать, так как сценарий остановится на первой линии в ожидании dblxsrv закончить так никогда не достигая следующие строки. Есть идеи?

+0

Вы думаете об использовании решения, которое не требует ключа продукта? – hek2mgl

+0

привет hek2mgl. нет шансов, поскольку наше решение сильно зависит от Gupta SQLBase – Marco

+1

Вы изучили параметры командной строки 'dblxsrv'? Возможно, есть способ передать ключ через командную строку? – hek2mgl

ответ

1

(тьфу, только заметил кто-то уже предложил expect в комментариях, но это было еще в очереди вопросов без ответа, потому что он не получил отправил в ответ.)

Так у вас есть программа (dblxsrv) который нуждается в некотором вводе на stdin, и вы хотите написать обертку для подачи этого ввода во время его запуска?

Вы должны быть в состоянии просто сделать:

dblxsrv < key.txt 

Если это не работает, и вы должны ждать запроса перед подачей его больше входного сигнала, то GNU expect будет делать трюк. Он запускает дочерний процесс с правильным tty, а не только файлом. Вы запускаете взаимодействие с программой с использованием языка программирования на базе Tk.

Смежные вопросы