将密钥发送到终端
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 的编程语言编写与程序交互的脚本。
我在使用 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 的编程语言编写与程序交互的脚本。