将多行stdin输入传递给交互式Java命令行程序,以非交互方式进行。

3
我有一个命令行java程序,从stdin中获取密码及其验证。不幸的是,由于它是专有软件,修改该程序并不可行。
我无法使用<从unix命令行传递参数,因为该程序中有两个提示,都要求输入相同的密码。在命令提示符上,会出现要求"Password"和"Password (validation):"的stdout语句。
我该如何将密码非交互式地传递给该程序,以便可以使用cron作业/RC脚本自动执行?
谢谢!
2个回答

2

很可能密码根本没有从stdin读取,而是从/dev/tty读取。如果是这种情况,你就没戏了。

你能通过stdin提供所有输入(包括密码)来运行程序吗?如果不能,那么你就没戏了。

然而,如果这样可以的话,你可以做以下操作:

(echo user; echo passwd1; echo passwd1; cat) | java -jar yourCommandlineprogram.jar 

看起来你是正确的 - 它将所有参数传递给第一个提示符,我最终也遇到了“stty:标准输入:无效参数”异常。 - Musannif Zahir
这是当它尝试设置noecho模式时。 - Ingo

1

根据你的问题,不确定Expect是否可行。


这肯定是一个选项,但我希望能够在不安装额外的RPM的情况下解决这个问题。 - Musannif Zahir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接