Voici mon code, qui récupère le contenu du fichier, sur le serveur distant et l'affiche en sortie.
package sshexample;
import com.jcraft.jsch.*;
import Java.io.*;
public class SSHexample
{
public static void main(String[] args)
{
String user = "user";
String password = "password";
String Host = "192.168.100.103";
int port=22;
String remoteFile="sample.txt";
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(user, Host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
System.out.println("Connection established.");
System.out.println("Creating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("SFTP Channel created.");
InputStream out= null;
out= sftpChannel.get(remoteFile);
BufferedReader br = new BufferedReader(new InputStreamReader(out));
String line;
while ((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
sftpChannel.disconnect();
session.disconnect();
}
catch(JSchException | SftpException | IOException e)
{
System.out.println(e);
}
}
}
Maintenant, comment implémenter ce programme que le fichier est copié dans l'hôte local et comment copier un fichier de l'hôte local sur le serveur.
Voici comment faire fonctionner le transfert de fichiers pour tout format de fichiers.
Le moyen le plus simple de télécharger un fichier via SFTP avec JSch est:
JSch jsch = new JSch();
Session session = jsch.getSession(user, Host);
session.setPassword(password);
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
sftpChannel.put("C:/source/local/path/file.Zip", "/target/remote/path/file.Zip");
De même pour un téléchargement:
sftpChannel.get("/source/remote/path/file.Zip", "C:/target/local/path/file.Zip");
Vous devrez peut-être gérer l'exception UnknownHostKey
.
Usage:
sftp("file:/C:/home/file.txt", "ssh://user:pass@Host/home");
sftp("ssh://user:pass@Host/home/file.txt", "file:/C:/home");
Le code ci-dessous fonctionne pour moi
public static void sftpsript(String filepath) {
try {
String user ="demouser"; // username for remote Host
String password ="demo123"; // password of the remote Host
String Host = "demo.net"; // remote Host address
JSch jsch = new JSch();
Session session = jsch.getSession(user, Host);
session.setPassword(password);
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
sftpChannel.put("I:/demo/myOutFile.txt", "/tmp/QA_Auto/myOutFile.Zip");
sftpChannel.disconnect();
session.disconnect();
}catch(Exception ex){
ex.printStackTrace();
}
}