[백업][가리사니] 자바 리눅스 ssh 사용하기
certificate, java, linux
이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.
서론
Jsch 를 이용하여 만든 쉘스크립트 접속 객체입니다.
오픈소스
준비
maven
<dependency>
<groupId>me.saro</groupId>
<artifactId>commons</artifactId>
<version>3.0.2</version>
</dependency>
gradle
compile 'me.saro:commons:3.0.2'
단순 실행
- SSHExecutor 는 같은 서비스내 터미널 결과만 받을 수 있음으로 SSHShell 사용 권장 ``` java String host = “localhost”; int port = 22; String user = “user”; String pass = “pass”; String charset = “utf-8”;
public void executor1() throws IOException { try (SSHExecutor ssh = SSHExecutor.open(host, port, user, pass, charset) ; Scanner sc = new Scanner(System.in)) {
System.out.println("connected :");
input : while ( true ) {
// 스케너를 이용하여 터미널처럼 사용
String line = sc.nextLine();
if (line.equals("exit")) {
break input;
}
System.out.println(ssh.cmd(line));
}
} } ```
단순 실행 결과 가져오기
- SSHExecutor 는 같은 서비스내 터미널 결과만 받을 수 있음으로 SSHShell 사용 권장 ``` java String host = “localhost”; int port = 22; String user = “user”; String pass = “pass”; String charset = “utf-8”;
public void executor2() throws IOException { // 단순 실행 후 결과를 받아온다. // 같은 session thread 내에 결과만 가능. String result = SSHExecutor.just(host, port, user, pass, charset, “ls -al”); System.out.println(result); }
# 쉘처럼 사용하기
``` java
String host = "localhost";
int port = 22;
String user = "user";
String pass = "pass";
String charset = "utf-8";
// 아웃풋은 System.out.println 로 받음
try (SSHShell ssh = SSHShell.open(host, port, user, pass, charset, System.out::println) ; Scanner sc = new Scanner(System.in)) {
input : while ( true ) {
// 스케너를 이용하여 터미널처럼 사용
String line = sc.nextLine();
ssh.cmd(line);
if ("exit".equals(line.trim())) {
break input;
}
}
}
특정 명령어 실행 후 종료
String host = "localhost";
int port = 22;
String user = "user";
String pass = "pass";
String charset = "utf-8";
public void shell2() throws IOException {
// 아웃풋은 System.out.println 로 받음
try (SSHShell ssh = SSHShell.open(host, port, user, pass, charset, System.out::println)) {
// ls
// ls -al
// ps -ef
// ll
ssh.cmd("ls", "ls -al", "ps -ef", "ll");
}
}