将密钥发送到终端

send keys to terminal

我在使用 docker 启动我的数据库容器时遇到问题。当数据库的二进制文件 (dblxsrv) 第一次启动时,它首先要求提供产品密钥。因此用户必须输入产品媒体密钥 (PMC) 并按回车键(这发生在终端中,而不是 window 或其他)。这就是为什么用户总是需要启动附加的容器才能进入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 完成,因此永远不会到达以下行。有什么想法吗?

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

所以您有一个程序 (dblxsrv) 需要在 stdin 上进行一些输入,并且您想编写一个包装器在它启动时为其提供该输入?

你应该可以做到:

dblxsrv < key.txt

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