我正在使用一个编译好的Java文件,需要一个文件名作为参数,并通过用户输入要求用户名和密码。我试图从一个shell脚本中自动化这个过程,但是遇到了问题。由于无法访问Java代码,所以我遇到了麻烦。
因此,代码的调用方式如下:
java javaprogram /home/user/securityfile
所以,你传递文件后,它会要求输入用户名和密码。输入后,就完成了。
现在,我尝试将用户输入放入文件中并传递,但是出现错误。
java javaprogram /home/user/securityfile < userinputfile
用户输入的文件包含以下文本(第一行是用户名,第二行是密码):
MattSmith
MSpassword136
有没有人有什么想法?也许我做错了什么?
这是错误信息:
Exception in thread "main" java.lang.NullPointerException at ilex.util.UserAuthFile.main(UserAuthFile.java:297)
谢谢
strace
来查看它与控制台的交互方式。请注意,任何安全地在控制台上读取密码的机制都无法使用管道;您可能需要一个pty。 - Daniel Pryden(echo "user"; sleep 1; echo "password") | java javaprogram /home/user/securityfile
。如果可以工作,您可以进行重构以从文件中读取,而不需要太多的工作。 - LMCSystem.in
读取,因为它需要交互式控制台System.console()
。这里有一些信息 链接。 - LMC