Помогите со сниппетом перезагрузки сервера

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Нужен сниппет чтоб сервак перезагружать по SSH
нужно отправлять команду - reboot

Нашел разные куски кода, но не соединить мне, не хватает пока знаний.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Блин, я бы помог если б знал...

Были материалы по поднятию проксей, можно от туда выдернуть ту часть что по SSH шлет команды.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Были материалы по поднятию проксей, можно от туда выдернуть ту часть что по SSH шлет команды.
да пытался, но чето там так нагорожено, не получилось с синтаксисом
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Просили в личку, оставлю для потомков. Вот код, но в шабе там еще доп. библиотеки прописаны, айпи и пароли на свои поменять надо:
C#:
project.Variables["ip"].Value = "93.235.172.23";
project.Variables["user_SSH"].Value = "root";
project.Variables["password_SSH"].Value = @"3blajkd_dCK";

string ip = project.Variables["ip"].Value;
string user = project.Variables["user_SSH"].Value;
string pass = project.Variables["password_SSH"].Value;

SshClient sshClient = new SshClient(ip, 22, user, pass);

        sshClient.Connect();   
        
            IDictionary<Renci.SshNet.Common.TerminalModes, uint> termkvp = new Dictionary<Renci.SshNet.Common.TerminalModes, uint>();
            termkvp.Add(Renci.SshNet.Common.TerminalModes.ECHO, 53);
            ShellStream shellStream = sshClient.CreateShellStream("xterm", 80,24, 800, 600, 1024, termkvp);
            System.Threading.Thread.Sleep(1000 * 1);
            shellStream.WriteLine("reboot");
            System.Threading.Thread.Sleep(1000 * 1);
            StreamReader reader = new StreamReader(shellStream);
            string out1 = reader.ReadToEnd();
            
            sshClient.Disconnect();
        
            return out1;
урлы по теме:
 

Вложения

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Вот код, но в шабе там еще доп. библиотеки прописаны, айпи и пароли на свои поменять надо:
вот такое выдает

C#:
Тип    Время    Сообщение
    15:41:28    Выполнение действия CSharp OwnCode. [Строка: 24; Cтолбец: 0] Не удалось загрузить файл или сборку "Renci.SshNet, Version=2014.4.6.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
либу качал из ссылки твоей


Где может пригодиться?
это перезагружает сервер, пригодится может для перезагрузки сервака :-)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
У меня код отрабатывает успешно, но перезагрузка не происходит.
Может пользователь от которого происходит авторизация нужно добавить какие-то права? Кто может подсказать?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
  • Спасибо
Реакции: KolkaPetkinSyn
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
  • Спасибо
Реакции: KolkaPetkinSyn
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Ну а если руками команду ввести, ребутнет?
 
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
Я его победил
C#:
string ip = project.Variables["ip"].Value;
string user = project.Variables["user_SSH"].Value;
string pass = project.Variables["password_SSH"].Value;

SshClient sshClient = new SshClient(ip, 22, user, pass);

        sshClient.Connect();   
        
            IDictionary<Renci.SshNet.Common.TerminalModes, uint> termkvp = new Dictionary<Renci.SshNet.Common.TerminalModes, uint>();
            termkvp.Add(Renci.SshNet.Common.TerminalModes.ECHO, 53);
            ShellStream shellStream = sshClient.CreateShellStream("xterm", 80,24, 800, 600, 1024, termkvp);
            System.Threading.Thread.Sleep(1000 * 1);
            shellStream.WriteLine("sudo reboot");
            System.Threading.Thread.Sleep(1000 * 1);
            shellStream.WriteLine(pass);//Добавил строку подтверждения пароля
            System.Threading.Thread.Sleep(1000 * 1);
            StreamReader reader = new StreamReader(shellStream);
            string out1 = reader.ReadToEnd();
            
            sshClient.Disconnect();
        
            return out1;
 
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
Скорее всего у меня у пользователя нет root прав изначально. Поэтому нужно подтверждать подобные команды паролем
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

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