문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | 다음 판 양쪽 다음 판 | ||
java:ssh [2015/08/18 16:30] kwon37xi [가장 기본 exec 채널] |
java:ssh [2015/08/18 17:12] kwon37xi |
||
---|---|---|---|
줄 6: | 줄 6: | ||
* [[http:// | * [[http:// | ||
+ | ===== 기본 Exec 예제, 일반/ | ||
+ | <code java> | ||
+ | JSch jsch = new JSch(); | ||
+ | |||
+ | String host = " | ||
+ | String username = " | ||
+ | jsch.addIdentity(" | ||
+ | |||
+ | Session session = jsch.getSession(username, | ||
+ | |||
+ | Properties sessionConfig = new Properties(); | ||
+ | sessionConfig.put(" | ||
+ | session.setConfig(sessionConfig); | ||
+ | session.connect(); | ||
+ | |||
+ | ChannelExec channel = (ChannelExec) session.openChannel(" | ||
+ | channel.setCommand("/ | ||
+ | |||
+ | // setInputStream을 호출하면 InputStream을 닫아주는 작업도 올바로 해야함. | ||
+ | channel.setInputStream(null); | ||
+ | |||
+ | // 출력 스트림을 명시적으로 받아서 처리할 것이므로 설정하지 않는다. | ||
+ | // channel.setOutputStream(System.out); | ||
+ | // channel.setErrStream(System.err); | ||
+ | |||
+ | // 출력 스트림을 호출하면 출력 스트림을 끝까지 읽고 처리해줘야 함. | ||
+ | InputStream inputStream = channel.getInputStream(); | ||
+ | final InputStream errStream = channel.getErrStream();// | ||
+ | byte[] buffer = new byte[BUFFER_SIZE]; | ||
+ | |||
+ | channel.connect(); | ||
+ | |||
+ | while(true) { | ||
+ | while (inputStream.available() > 0) { | ||
+ | int i = inputStream.read(buffer, | ||
+ | if (i < 0) { | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | System.out.println(new String(buffer, | ||
+ | } | ||
+ | |||
+ | while (errStream.available() > 0) { | ||
+ | int i = errStream.read(buffer, | ||
+ | if (i > 0) { | ||
+ | System.err.println(new String(buffer, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (channel.isClosed()) { | ||
+ | if (inputStream.available() > 0 || errStream.available() > 0) { | ||
+ | continue; | ||
+ | } | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | TimeUnit.MILLISECONDS.sleep(100); | ||
+ | } | ||
+ | |||
+ | final int exitStatus = channel.getExitStatus(); | ||
+ | System.out.println(" | ||
+ | |||
+ | channel.disconnect(); | ||
+ | session.disconnect(); | ||
+ | </ | ||
===== Channels ===== | ===== Channels ===== |