2016-08-17 2 views
-2

간단한 Java 명령을 실행하여 Java 코드를 통해 원격 서버의 파일에 텍스트를 추가하려고합니다. 하지만 작동하지 않습니다. 내가 리눅스 박스에서 똑같은 명령을 실행할 때 잘 동작한다.'Echo'linux 명령이 Java 코드를 통해 작동하지 않습니다.

try { 
     java.util.Properties config = new java.util.Properties(); 
     config.put("StrictHostKeyChecking", "no"); 
     JSch jsch = new JSch(); 

     Session sessionwrite = jsch.getSession(user2, host2, 22); 
     sessionwrite.setPassword(password2); 
     sessionwrite.setConfig(config); 
     sessionwrite.connect(); 
     System.out.println("Connected"); 

     Channel channel = sessionwrite.openChannel("exec"); 
     BufferedReader in = new BufferedReader(new InputStreamReader(
       channel.getInputStream())); 

     String command = "echo \"hello\" >> welcome.txt"; 
     ((ChannelExec) channel).setCommand(command); 
     System.out.println("done"); 
} 
+2

작동하지 않는다면 무엇을 의미합니까? 'welcome.txt'는 어디에서 끝날 것이라고 생각합니까? 쉘 (shell) 채널을 사용해 보셨습니까? –

답변

0
Channel channel = sessionwrite.openChannel("exec"); 
BufferedReader in = new BufferedReader(new InputStreamReader(
     channel.getInputStream())); 

String command = "echo \"hello\" >> welcome.txt"; 
((ChannelExec) channel).setCommand(command); 
System.out.println("done"); 

당신은 channel.connect()에 대한 호출을 놓치고있어. connect()은 실제로 명령을 호출하기 위해 원격 서버에 요청을 보내는 메소드입니다. 채널을 끝내려면 채널 channel.disconnect()으로 전화해야합니다. 코드는 다음과 같을 수 있습니다

Channel channel = sessionwrite.openChannel("exec"); 
BufferedReader in = new BufferedReader(new InputStreamReader(
     channel.getInputStream())); 

String command = "echo \"hello\" >> welcome.txt"; 
((ChannelExec) channel).setCommand(command); 
channel.connect(); 
channel.disconnect(); 
System.out.println("done"); 

나는 당신이 밖으로 그 라인을 떠날 수 있도록이 특정 예제에서 간부 채널의 표준 입력에 입력 스트림을 엽니 다 이유가 없다, 저것을 추가합니다.

관련 문제