向带有密码提示的程序提供输入

向带有密码提示的程序提供输入

是否有任何 Linux 命令可以向在终端中运行的另一个进程提供多个回车键,直到另一个进程死亡?

例如考虑命令yes ' ' | ./ssr-sim prepare.我需要在管道 ( |) 的 LHS 侧有一个命令。例如,另一个命令不是yes ' '在左侧,而是在右侧|提供多个回车键。./ssr-sim prepare

我想在 shell 脚本中自动输入按键,并且该命令./ssr-sim prepare会生成多次要求输入密码的输出,并且用户Enter每次都需要手动按下该键(无需在此处提供密码,只需Enter在每次要求输入时按下)密码)。我需要自动按下输入键部分。
该命令yes ' ' | ./ssr-sim prepare不起作用。

答案1

如果echoing 或yesing 输入到交互式程序不足以欺骗它,这通常是因为它试图变得聪明并检查其输入是否真的是终端或管道。为此,您需要一把更大的锤子;人们通常使用的是预计,这是为了规避这个问题而编写的。

答案2

printf \\n%.0b `seq 1 ${NUMBER OF TIMES YOU WANT}` | $CMD

如果你的$CMD不喜欢这个管道你可以尝试:

printf 'PRESS CTRL+V then ENTER TWICE\n' >&2 ; read -r ENTER

$CMD <<YESALREADY
    $(printf "$ENTER\n%.0b" `seq 1 ${NUMBER OF TIMES YOU WANT}`)
YESALREADY

如果这不起作用,您应该寻找类似的解决方案expect已经提到过,或者pty例如,zsh有一个内置的zpty模块。

相关内容