Как создать файл на сервере sftp, а также изменить разрешение этого файла на 511

hari спросил: 31 июля 2018 в 09:45 в: java

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

SshParameters params = new 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: session это downat 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 ответ

SubOptimal ответил: 31 июля 2018 в 10:10

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

Как набросок, он работает примерно так:

Session session = jsch.getSession("uname", "hostname", port);
session.connect();Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;

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