Как создать файл на сервере sftp, а также нужно изменить разрешение этого файла на 511 - PullRequest
0 голосов
/ 24 августа 2018

Я пытался использовать этот код:

SshParameters params = новые SshParameters (ftpHostname, ftpUsername, ftpPassword);SftpConfiguration config = SftpConfiguration.defaultConfiguration ();

    // create Sftp instance
    Sftp sftp = new Sftp(params,config);

    // capture FTP related events
    sftp.addSftpListener(new DeliverySftpListener());

    // establish secure FTP connection
    sftp.connect();

String serverFileName = "FileInServer.txt";

    sftp.upload("src/test/java/com/filecreation/testfile/"+fileName+".txt",serverFileName);


    Session session = null;

    JSch jsch=new JSch();        

    Properties configone = new Properties();
    configone.put("StrictHostKeyChecking", "no");
    configone.put("PreferredAuthentications",password);
    JSch.setConfig(configone);

    session=jsch.getSession("uname", "hostname", port);

    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");

    if (!channel.isConnected()) 
    channel.connect(5000);
    channel.chmod(511,"/home/abc/FileInServer.txt");
    channel.disconnect();
    session.disconnect();

...

Я получаю следующее исключение: com.jcraft.jsch.JSchException: сеанс не работает на com.jcraft.jsch.Session.openChannel (Session.java:861) на com.visa.apps.comms.delivery.ftp.FileCreation.getListing (FileCreation.java:229) на com.visa.apps.comms.delivery.ftp.FileCreation.main (FileCreation.java:44)

1 Ответ

0 голосов
/ 24 августа 2018

Вы, вероятно, забыли подключиться к серверу.По крайней мере, в вашем фрагменте нет сеанса соединения.

В качестве эскиза он работает как

Session session = jsch.getSession("uname", "hostname", port);
session.connect();

Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;

Посмотрите на JSch - Пример - Sftp.java .

...