Нужен снипет для заливки файлов по SSH

one

Client
Регистрация
22.09.2015
Сообщения
6 792
Благодарностей
1 264
Баллы
113
Нужен снипет для массовой заливки файлов из папки на удаленный сервер по SSH протоколу. Кто что подскажет\поделится?
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
316
Благодарностей
230
Баллы
43
Код взят отсюда:

Создаём новый проект, через кубик Visual Studio
Через диспетчер пакетов nuget подключаем
Install-Package SSH.NET -Version 2020.0.1

ssh:
using System.IO;
using Renci.SshNet;

namespace ssh
{
    /// <summary>
    /// Класс для запуска выполнения скрипта
    /// </summary>
    public class Program : IZennoExternalCode
    {
        /// <summary>
        /// Метод для запуска выполнения скрипта
        /// </summary>
        /// <param name="instance">Объект инстанса выделеный для данного скрипта</param>
        /// <param name="project">Объект проекта выделеный для данного скрипта</param>
        /// <returns>Код выполнения скрипта</returns>       
        public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            string pathToFiles = "";// путь к папке с файлами;
            string host =  "";// хост ssh;
            int port = 22; // порт
            string user = ""; // имя пользователя
            string password = ""; // пароль
            
            SendFilesToServer.Send(pathToFiles, host, port, user, password, "полный путь к удалённой директории");
            return 1;
        }
    }
    public static class SendFilesToServer
    {
        public static void Send(string pathToFiles, string host, int port, string user, string password, string remoteDir = "/")
        {
            using (var sftp = new SftpClient(host, port, user, password))
            {
                string[] files = Directory.GetFiles(pathToFiles);
                sftp.Connect();
                sftp.ChangeDirectory(remoteDir);
                foreach (string filePath in files)
                {
                    using (var uplfileStream = System.IO.File.OpenRead(filePath))
                    {

                        sftp.UploadFile(uplfileStream, Path.GetFileName(filePath), true);
                    }
                }
                sftp.Disconnect();
            }

        }
    }
}
Напрямую подружить с зенкой не вышло, ругается на сборку, не стал разбираться
 
  • Спасибо
Реакции: one и Sanekk

one

Client
Регистрация
22.09.2015
Сообщения
6 792
Благодарностей
1 264
Баллы
113
Вообщем эту библиотеку Renci.SshNet надо использовать?
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
316
Благодарностей
230
Баллы
43
Для этого сниппета, да
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 792
Благодарностей
1 264
Баллы
113
Блин, я наверное не корректно вопрос задал. Вообщем задача копировать файлы на удаленную машину по протоколу SSH с авторизацией по ключу. В данный момент используется rsync с ключами -avz -e "ssh -p 1111". Хочу попробовать сделать решение на ZP.
 

Marvik

Client
Регистрация
31.10.2019
Сообщения
14
Благодарностей
3
Баллы
3
в комплекте с putty есть pscp он умеет и по паролю и по ключу
как то так:
C:\>pscp -i "path\of\the\privatekey\privatekey.ppk" -P 8022 C:\temp\example_file.txt user@server:path/file/to/be/stored
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 792
Благодарностей
1 264
Баллы
113
в комплекте с putty есть pscp он умеет и по паролю и по ключу
как то так:
C:\>pscp -i "path\of\the\privatekey\privatekey.ppk" -P 8022 C:\temp\example_file.txt user@server:path/file/to/be/stored
Тааак, интересно стало. Спасибо! Буду смотреть в эту сторону.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)