Автоматическая настройка SMTP сервера. Соединение с сервером по SSH.

  • Автор темы Автор темы Лев
  • Дата начала Дата начала
почемуто при попытке установить соединение получаю ошибку

Код:
Развернуть Свернуть Копировать
    21:34:57    Компиляция кода  Ошибка в действии "CS1002" "ожидалась ;". [Строка: -9; Cтолбец: 19]

для теста взят минимальный конфиг

Код:
Развернуть Свернуть Копировать
SshClient sshClient = new SshClient("ip", 22, "root", "password");

sshClient.Connect();

return "ok";

вместо IP и пароля стоят соответсвующие значения

библиотека подключена


Подскажите пожалуйста, ну установил я соединение с сервером через этот метод, как дальше мне выполнять команды, в этом же кубике или в отдельном?
например залить файл на сервак...как эту команду выполнить в зено, если можно с примером, пожалуйста.
 
Кто нибудь пробовал запускать файлы на ВинСервере по ssh?
Пытаюсь запустить блокнот и браузер, но увы...
Код выполняется успешно, но на сервере ничего не стартует:
C#:
Развернуть Свернуть Копировать
SshClient sshClient = new SshClient("ip", 22, "Administrator", "2U3Zb");
sshClient.Connect();
        project.SendInfoToLog("Соединились с сервером", true);
            
var cmd = sshClient.CreateCommand("C%3A%5CUsers%5CAdministrator%5CAppData%5CLocal%5CYandex%5CYandexBrowser%5CApplication%5Cbrowser.exe");
        cmd.Execute();
Подключение происходит, а потом вечная тишина:
C#:
Развернуть Свернуть Копировать
SshClient sshClient = new SshClient("ip", 22, "Administrator", "pass");
sshClient.Connect();
        project.SendInfoToLog("Соединились с сервером", true);
            
var cmd = sshClient.CreateCommand("Notepad.exe");
        cmd.Execute();
Может я команду посылаю не верно?
 
Надо смотреть , что там за ошибка такая, так сходу не скажу
У тебя точно подключается с серверу? Можешь создать текстовый файл и прочитать его в переменную?
Есть подозрение, что и порт (22) совсем не дефолтный у тебя. А может и на виндус нужно ssh ключи генерить для удаленного подключения
 
  • Спасибо
Реакции: KolkaPetkinSyn
Надо смотреть , что там за ошибка такая, так сходу не скажу
У тебя точно подключается с серверу? Можешь создать текстовый файл и прочитать его в переменную?
Есть подозрение, что и порт (22) совсем не дефолтный у тебя. А может и на виндус нужно ssh ключи генерить для удаленного подключения
Подскажи код, которым прочитать файл в переменную?
При помощи FileZilla Удаётся подключиться Порт 22
 
Последнее редактирование:
Подскажи код, которым прочитать файл в переменную?
При помощи FileZilla Удаётся подключиться Порт 22

нет, под рукой этой библиотеки, нужно смотреть, какие финукции можно вызвать....
ну что то из разряда:

C#:
Развернуть Свернуть Копировать
.......
string read_file = sshClient.CreateCommand("puth_to_file_needing_to_read").Execute();
project.Variables["file"].Value = read_file;
......
 
Попробуй вместо
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.CreateCommand("Notepad.exe");
cmd.Execute();
выполнить
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.RunCommand("Notepad.exe");
 
  • Спасибо
Реакции: KolkaPetkinSyn
нет, под рукой этой библиотеки, нужно смотреть, какие финукции можно вызвать....
ну что то из разряда:

C#:
Развернуть Свернуть Копировать
.......
string read_file = sshClient.CreateCommand("puth_to_file_needing_to_read").Execute();
project.Variables["file"].Value = read_file;
......
Попробуй вместо
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.CreateCommand("Notepad.exe");
cmd.Execute();
выполнить
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.RunCommand("Notepad.exe");

В обоих случаях после подключения к серверу код зависает, приходится прерывать.
По порядку:
Если команда это адрес файла на сервере в обычном виде- вечная загрузка
Если команда это "Notepad.exe"- вечная загрузка
Если команда это переменна в которой адрес файла на сервере в обычном виде- вечная загрузка
Если команда это адрес файла на сервере в кодированном виде- код отрабатывает успешно, но ничего не происходит
 
Пользуюсь для подключения к удалённому компьютеру ssh вышеописанным методом. Регулярно запускаю .exe файл. Столкнулся с такой проблемой: после 50-60 запросов удаленный компьютер перестает отвечать по ssh. Помогает только перезагрузка. Во время попыток найти причину, заметил кучу действующих ssh соединений. Получается, что данные метод создаёт подключение, но по завершению работы его не убивает. Подскажите, как сделать чтобы ssh соединение закрывалось после выполнения команды. Или команду для командной строки которая закрыла бы все действующие ssh соединения?
 
Подскажите, как сделать чтобы ssh соединение закрывалось после выполнения команды. Или команду для командной строки которая закрыла бы все действующие ssh соединения?

C#:
Развернуть Свернуть Копировать
using (var client = new SshClient(ip, port, user, password))
{
    try
    {
        client.Connect();
        
        var cmd = sshClient.RunCommand("Notepad.exe");

        client.Disconnect();
    }

    catch (Exception e)
    {
        return null;
    }
}
 
  • Спасибо
Реакции: KolkaPetkinSyn
Для информации (обжегся): В Google Cloud Platform забанены порты SMTP, поэтому отправить почту там не получится. Работает только получение.
 
C#:
Развернуть Свернуть Копировать
using (var client = new SshClient(ip, port, user, password))
{
    try
    {
        client.Connect();
       
        var cmd = sshClient.RunCommand("Notepad.exe");

        client.Disconnect();
    }

    catch (Exception e)
    {
        return null;
    }
}
А можешь помочь еще с таким вопросом:
Нужно выполнить команду с последующим введением логина и пароля. То есть, нужно ввести команду, дождаться пока попросят ввести логин, ввести логин подтвердить и подождать пока попросят пароль, затем ввести пароль и подтвердить
В Гугле не нашёл ни одного примера
 
А можешь помочь еще с таким вопросом:
Нужно выполнить команду с последующим введением логина и пароля. То есть, нужно ввести команду, дождаться пока попросят ввести логин, ввести логин подтвердить и подождать пока попросят пароль, затем ввести пароль и подтвердить
В Гугле не нашёл ни одного примера
Ну в шелле это делается через read
Код:
Развернуть Свернуть Копировать
read line
echo "$line"
Только ведь окно терминала не выводится
 
  • Спасибо
Реакции: KolkaPetkinSyn
Помогите выйти из screen с помощью этой библиотеки
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.CreateCommand("screen -r");
        cmd.Execute();
        
        cmd = sshClient.CreateCommand("nginx");
        cmd.Execute();
        cmd = sshClient.CreateCommand("КАК ЭМУЛИРОВАТЬ ctrl+a+d?");
        cmd.Execute();

        sshClient.Disconnect();
 
Помогите выйти из screen с помощью этой библиотеки
C#:
Развернуть Свернуть Копировать
var cmd = sshClient.CreateCommand("screen -r");
        cmd.Execute();
       
        cmd = sshClient.CreateCommand("nginx");
        cmd.Execute();
        cmd = sshClient.CreateCommand("КАК ЭМУЛИРОВАТЬ ctrl+a+d?");
        cmd.Execute();

        sshClient.Disconnect();

Вроде помогло запускать screen -d -m nginx
 
Посмотреть вложение 46450

А вообще, работать с ssh через zennoposter - извращение.
Для автоматизации в linux существует множество других решений: bash, ansible, perl, python и тд.
А как Renci.SSH коннект будет выглядеть?

Интересует подключение через ключ авторизации, так как вырубаю подключение по паролю для безопасности.

C#:
Развернуть Свернуть Копировать
string host = project.Variables["host"].Value;
string username = project.Variables["user"].Value;
string password = project.Variables["pass"].Value;

SshClient sshClient = new SshClient(host, 22, username, password);
 
Помогите понять что за трабл?(
Выполнение действия CSharp OwnCode. [Строка: 8; Cтолбец: 0] Не удалось загрузить файл или сборку "Renci.SshNet, Version=2014.4.6.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
 
Помогите понять что за трабл?(
Выполнение действия CSharp OwnCode. [Строка: 8; Cтолбец: 0] Не удалось загрузить файл или сборку "Renci.SshNet, Version=2014.4.6.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Необходимо добавить библиотеку Renci.SshNet.dll
 

Вложения

  • Screenshot 2021-10-18 at 15.33.28.png
    Screenshot 2021-10-18 at 15.33.28.png
    44,9 KB · Просмотры: 219

Вложения

  • Спасибо
Реакции: Scorpio2011 и TopFlow
Спасибо большое - сразу взлетела!
 
подскажите пожалуйста как сделать для команды "var cmd = sshClient.CreateCommand("rm -rf /var/www/www-root/");" таймаут? а то зависает команда порой
 
  • Спасибо
Реакции: TeslaCo
подскажите пожалуйста как сделать для команды "var cmd = sshClient.CreateCommand("rm -rf /var/www/www-root/");" таймаут? а то зависает команда порой
C#:
Развернуть Свернуть Копировать
sshClient.RunCommand("rm -rf /var/www/www-root/");
Дожидается завершения операции
 
  • Спасибо
Реакции: TeslaCo и nicos77777
А можно как то С# самому поставить таймаут?
Чтобы после определённого времени команда прерывала выполнение?
Я использую у себя в шаблоне такое же удаление файлов, никогда ничего не зависало.
 
Чтобы после определённого времени команда прерывала выполнение?
Я использую у себя в шаблоне такое же удаление файлов, никогда ничего не зависало.
Иногда при удалении с серверов которые очень сильно загруженны очень большого количества файлов, бывает уходит в завис. Похоже придется делать сам c# отдельным шаблоном и делать таймаут шаблона
 

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