2021-12-28
특정 서버에 접속하여, 원하는 정보를 가져와야 하는 경우가 있다. 이러한 경우 어떻게 해당 서버에 접근하여 정보를 가져오는지 알아보자.
- import
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
- 예제
public void sftpTest() {
String requestContent = "";
//파일경로
String fileLocation = "";
JSch jSch = new JSch();
Session session;
ChannelSftp sftp;
try {
String id = "abc";
String ip = "111.111.111.111";
Integer port = 8080;
String pw = "abc";
// 접속 정보 세팅
session = jSch.getSession(id, ip, port);
session.setPassword(pw);
Properties properties = new Properties();
properties.put("StrictHostKeyChecking", "no");
session.setConfig(properties);
session.connect();
// sftp 연결
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
try {
//확인해야 되는 파일명
String checkFileName= "abc.txt";
//파일경로 지정
fileLocation = "/home/abc/";
sftp.cd(fileLocation);
//inputstream 파일 정보를 담는다.
InputStream inputStream = null;
//요청 파일을 가져온다.
inputStream = sftp.get(checkFileName);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
int count = 0;
String line = ""; //텍스트 파일 한줄씩 담을 객체
while(line != null) {
try {
line = reader.readLine();
}catch (Exception e) {
line = null;
}
if(line == null) {break;}//읽을 행이 없으면 종료
requestContent = line;
System.out.println("읽은 정보 -> " + requestContent);
}
}catch (Exception e) {
System.out.println(e.toString());
reader.close();
}
}catch (Exception e) {
System.out.println(e.toString());
sftp.quit(); //sftp 종료
session.disconnect(); //세션 종료
}
}catch (Exception e) {
System.out.println(e.toString());
sftp.quit(); //sftp 종료
session.disconnect(); //세션 종료
}
}catch (Exception e) {
System.out.println(e.toString());
}
}
라이브러리는 jsch를 사용했으며, inputStream으로 파일 정보를 한 줄씩 읽어와 받는 코드이다. 사용자 조건에 따라 서버의 ip / port / id / pw / 파일 위치 / 파일명을 변경해야 되며, 해당 서버에 방화벽은 제외시켜야지 정상 접근이 될 것이다.
메인 이미지 출처 : Photo by Arawark chen on Unsplash