将密钥发送到终端

时间:2015-03-21 17:51:24

标签: linux bash docker

使用docker启动数据库容器时遇到问题。当第一次启动数据库的二进制文件(dblxsrv)时,它首先要求输出产品密钥。因此,用户必须输入产品介质密钥(PMC)并按Enter键(这发生在终端,而不是窗口或某个窗口)。这就是为什么用户总是需要启动附加的容器才能进入PMC。

我想知道我是否可以通过bash脚本发送此密钥,以便数据库完全启动(模拟键盘输入)。

我想到了......像:

./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完成的第一行停止,所以永远不会到达以下行。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

(呃,刚刚注意到某人已经在评论中提出了expect,但这仍然是未回答的问题排队,因为它没有作为答案发布。)

所以你有一个程序(dblxsrv)需要stdin上的一些输入,并且你想要一个包装器在它启动时输入它?

你应该能够做到:

dblxsrv < key.txt

如果这不起作用,并且你需要等待提示才能输入更多输入,那么GNU expect就可以了。它使用适当的tty运行子进程,而不仅仅是文件。您可以使用基于Tk的编程语言编写与程序的交互脚本。