【发布时间】:2015-01-27 15:27:13
【问题描述】:
我在通过 Java 向终端发送命令时遇到了一个非常令人困惑的问题。 我有这个代码:
Process p = Runtime.getRuntime().exec(new String[]{"useradd", server, "-p", pass, "-d", "/home/dakadocp/servers/" + server, "-s", "/bin/false"});
Runtime.getRuntime().exec(new String[]{"echo", server + ":" + pass, "|", "chpasswd"});
第一个命令是这个“useradd user -p password -d /home/ftp/test/ -s /bin/false”,第二个应该是这个 echo username:new_password | chpasswd,第一个命令没有任何问题,并创建了我由“服务器”变量定义的用户,但是当我尝试执行第二个命令来更改用户时,通过这个命令可能永远不会发生,输出为空,密码不是更改了,但是当我直接向终端键入此命令时,它可以完美运行,所以这只是 Java 问题。
我认为问题出在字符“|”上,之前我还尝试了一些带有“|”的命令它的行为与此命令相同。我做错了什么?
谢谢。 微信。
【问题讨论】:
标签: java linux terminal command execute