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

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

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

Создаём новый проект, через кубик 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
Вообщем эту библиотеку Renci.SshNet надо использовать?
 
Для этого сниппета, да
 
  • Оценить
Реакции: one
Блин, я наверное не корректно вопрос задал. Вообщем задача копировать файлы на удаленную машину по протоколу SSH с авторизацией по ключу. В данный момент используется rsync с ключами -avz -e "ssh -p 1111". Хочу попробовать сделать решение на ZP.
 
в комплекте с 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
в комплекте с 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
Тааак, интересно стало. Спасибо! Буду смотреть в эту сторону.
 

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