Java를 통해 터미널에 명령을 보내는 것에 관한 정말 혼란스러운 문제가 있습니다.Java에서 debian terminal 명령을 "|"
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 사용자 -p 암호 -d/가정/FTP/테스트/-s/빈/거짓"이고 두 번째는이 에코해야한다 : 나는 정확히이 코드가 사용자 이름 : new_password | chpasswd, 첫 번째 명령은 아무런 문제없이 작동하며 "server"변수로 정의한 사용자를 만듭니다. 그러나 두 번째 명령을 실행하여이 명령이 성공하지 못한 경우 사용자가 결과를 출력하려고하면 출력이 null이되고 암호는 그렇지 않습니다. 변경되었지만이 명령을 터미널에 직접 입력하면 완벽하게 작동하므로 Java 문제 일뿐입니다.
"|"로 일부 명령을 시도하기 전에 문제가 문자 "|"에 있다고 생각합니다. 그 행동은이 명령과 같습니다. 내가 뭘 잘못하고 있니?
감사합니다. Welite.
니스, 감사, 내가 두 번째 솔루션을 사용하고 꽤 잘 작동 : 더 좋은 방법은 그 자체로
chpasswd
를 실행하고 여기에 문자열을 작성하는 것입니다! – Welite