【问题标题】:Pass multiple lines of stdin input to interactive Java command line program, non-interactively以非交互方式将多行 stdin 输入传递给交互式 Java 命令行程序
【发布时间】:2011-04-12 15:00:49
【问题描述】:

我有一个命令行 java 程序,它接受密码并从标准输入验证。不幸的是,修改程序不是一种选择,因为它是专有的。

我无法使用 < 从 unix 命令行传递参数,因为程序中有两个提示,都要求输入相同的密码。有标准输出语句要求在命令提示符下输入“密码”和“密码(验证):”。

如何以非交互方式将密码传递给该程序,以便可以使用 cron 作业/RC 脚本自动执行?

谢谢!

【问题讨论】:

    标签: java linux testing unix


    【解决方案1】:

    您的问题不确定Expect 是否可以接受。

    【讨论】:

    • 这绝对是一个选项,但我希望无需安装额外的 RPM 即可解决问题
    【解决方案2】:

    密码可能根本不是从标准输入读取的,而是从 /dev/tty 读取的。在这种情况下,你就不走运了。

    你能通过标准输入输入包括密码在内的所有输入来运行程序吗?如果没有,那你就不走运了。

    但是,如果这可行,您可以执行类似的操作

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

    【讨论】:

    • 看起来你是对的 - 它将所有参数传递给第一个提示,我也得到了“stty:标准输入:无效参数”异常
    • 这是它尝试设置 noecho 模式的时候。
    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多