7 Ocak 2012 Cumartesi

Java ile Scp bağlantı yoluyla uzak bilgisayardan dosya yüklemek

KÜTÜPHANELER:

chilkat.jar
jsch.jar
jython.jar
log4j-1.2.14.jar
scpimpl.jar


KOD:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Writer;
import java.util.Properties;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class ScpGetFile {
private String User;
private String Password;
private int Port = 22;
private String Server;
private String RemoteFilepath;
private String SaveFilePathDest;
private File file = null;

public static void main(String[] args) throws Exception {
ScpGetFile scp = new ScpGetFile();
scp.setPassword("password");
scp.setPort(22);
scp.setUser("user");
scp.setServer("server ip");
scp.setRemoteFilepath("path destination");
scp.setSaveFilePathDest("c:/");
scp.SaveFileFromServer();
}

public void SaveFileFromServer() throws Exception {
String[] strdizi = this.getRemoteFilepath().split("/");
if (null == this.getFile())
this.file = new File(this.getSaveFilePathDest()
+ strdizi[strdizi.length - 1]);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("compression.s2c", "zlib,none");
config.put("compression.c2s", "zlib,none");
JSch jsch = new JSch();
String filePath = this.getRemoteFilepath();
Session session = jsch.getSession(this.getUser(), this.getServer());
session.setConfig(config);
session.setPort(this.getPort());
session.setPassword(this.getPassword());
session.connect();
ChannelSftp c = (ChannelSftp) session.openChannel("sftp");
c.connect();
InputStream is = c.get(filePath);
BufferedInputStream bf = new BufferedInputStream(is);
try {
DataInputStream in = new DataInputStream(is);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine = "";
StringBuffer genel = new StringBuffer();

int sayac = 0;
while (true) {
sayac++;
if (null == br.readLine()) {
break;
} else genel.append(br.readLine() + "\n");
}
Writer output = new BufferedWriter(new FileWriter(file));
output.write(genel.toString());
output.close();

} catch (Exception e) {
e.printStackTrace();
} finally {
c.disconnect();
session.disconnect();
}
}

public void setRemoteServerLogin() {

}

public String getUser() {
return User;
}

public void setUser(String user) {
User = user;
}

public String getPassword() {
return Password;
}

public void setPassword(String password) {
Password = password;
}

public int getPort() {
return Port;
}

public void setPort(int port) {
Port = port;
}

public String getServer() {
return Server;
}

public void setServer(String server) {
Server = server;
}

public String getRemoteFilepath() {
return RemoteFilepath;
}

public void setRemoteFilepath(String remoteFilepath) {
RemoteFilepath = remoteFilepath;
}

public String getSaveFilePathDest() {
return SaveFilePathDest;
}

public void setSaveFilePathDest(String saveFilePathDest) {
SaveFilePathDest = saveFilePathDest;
}

public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}

}