Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.99/165: Рейтинг темы: голосов - 165, средняя оценка - 4.99
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
1

SSH, выполнение команд

04.02.2016, 21:09. Показов 30026. Ответов 32
Метки ssh (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!

У меня есть VPS, на котором необходимо выполнять команды (зайти в директорию, старт, стоп) - всё это, я делаю через putty. Как можно в C# сделать подключение к SSH для выполнения этих команд? Подскажите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2016, 21:09
Ответы с готовыми решениями:

Не выполняется одна из команд при работе с SSH
Есть следующий код, задача которого установить под ключ прокси-сервер 3proxy: SshClient...

Выполнение команд голосом
Здравствуйте, я новичок, но захотелось поиграться с такой штукой как выполнение команд голосом....

Скрытое выполнение команд
Здравствуйте. Учусь на факультете информационной безопасности и в качестве дз по программированию...

Выполнение нескольких команд BAT файлов
Пример ниже позволяет выполнить одну команду в командной строке: ...

32
11 / 11 / 7
Регистрация: 05.05.2015
Сообщений: 25
17.02.2016, 15:11 2
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using Renci.SshNet;
using Renci.SshNet.Common;
 
PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(IP_ssh_server,port_ssh_server, ssh_user,ssh_password);
            connectionInfo.Timeout = TimeSpan.FromSeconds(30);
            
            using (var client = new SshClient(connectionInfo))
            {
                try
                {
                    client.Connect();
                    if (client.IsConnected)
                    {
                       client.RunCommand("тут сама команда указывается")
                        Console.WriteLine("SSH connection active");
                    }
                    else
                    {
                        Console.WriteLine("SSH connection NOTactive");
                    }
2
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
19.02.2016, 11:10  [ТС] 3
Спасибо, работает, но есть небольшая проблема. Одну команду никак не хочет вызывать, хотя через патти вызывается без каких-либо проблем. В чем может быть проблема, не знаешь? Ни ошибок, ничего нет..
0
11 / 11 / 7
Регистрация: 05.05.2015
Сообщений: 25
19.02.2016, 11:15 4
Спасибо, работает, но есть небольшая проблема. Одну команду никак не хочет вызывать, хотя через патти вызывается без каких-либо проблем. В чем может быть проблема, не знаешь? Ни ошибок, ничего нет..
Подробнее о команде. Что пытаетесь сделать. В общем распишите как можно больше.
1
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
19.02.2016, 11:19  [ТС] 5
У меня на впс расположен сервер крмп (адаптация самп).

Отключить сервер получается путем выполнения команды входа в директорию и собственно, отключения:
C#
1
2
client.RunCommand("cd srv-cr-mp-c3-linux");
client.RunCommand("killall samp03svr-cr");
А вот включить, не получается:
C#
1
2
client.RunCommand("cd srv-cr-mp-c3-linux");
client.RunCommand("nohup ./samp03svr-cr &");
Хотя обе команды через патти работают.
0
11 / 11 / 7
Регистрация: 05.05.2015
Сообщений: 25
19.02.2016, 11:45 6
Попробуй сделать так для наглядности.
C#
1
2
3
4
5
var result = client.RunCommand("тут сама команда указывается");
//если в консоли пишем результат выполнения команды
Conlose.WriteLine(result.Result);
//если в формах для примера
richTextBox1.Text=result.Result.ToString();
1
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
19.02.2016, 11:58  [ТС] 7
Я так уже делал, выводит просто пустую строку и всё, даже на команде которая работает успешно (отключение).
0
11 / 11 / 7
Регистрация: 05.05.2015
Сообщений: 25
19.02.2016, 12:09 8
Fedor_Fedorov, Сейчас через proxy не смогу протестировать (с этой библиотекой не катит через proxy), только вечером если попробовать.
1
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
19.02.2016, 12:19  [ТС] 9
Хорошо, спасибо большое. У меня в принципе не горит
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
23.02.2016, 21:45  [ТС] 10
Сейчас выяснил, что не работает команда входа в директорию (cd) тупо игнорирует и всё. Права 777 на папке. Что только не пробовал, никак не хочет заходить в папку. Что может быть? Попробовал создать новую папку и всё равно результат тот же.
0
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
07.06.2016, 19:41 11
Ну как дело продвинулось?
А то у меня сейчас такая же проблема, не прорабатывает команда входа в директорию...
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
07.06.2016, 20:34  [ТС] 12
Felagund, там в одну строку нужно... более точно сейчас сказать не могу, т.к не помню. Дома буду, посмотрю и отвечу.

Добавлено через 27 минут
Felagund, вот так:
C++ (Qt)
1
cd srv-cr-mp-c3-linux; nohup ./samp03svr-cr &
1
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
07.06.2016, 21:08 13
Спасибо, получилось!
Я правда пока только начал библиотеку использовать, простейшие команды использую для ознакомления
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
18.10.2016, 21:20 14
Как вам удалось подключить данные библиотеки? Renchi, облазил много сайтов, так ничего и не понял
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
18.10.2016, 21:33  [ТС] 15
vinste, в смысле найти что ли не можешь? Где скачивал не помню, но на рабочем столе нашелся .dll
Вложения
Тип файла: zip Renci.SshNet.dll.zip (173.0 Кб, 136 просмотров)
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
18.10.2016, 21:44 16
Отлично! Спасибо! Только одна dll?

Добавлено через 19 секунд
Fedor_Fedorov, Отлично! Спасибо! Только одна dll?
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
18.10.2016, 21:46  [ТС] 17
vinste, да, только одна, больше вроде и не было.
1
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
18.10.2016, 21:51 18
Fedor_Fedorov, Хорошо, осталось разобраться с подключением к ssh
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
21.10.2016, 17:25 19
Fedor_Fedorov, странно, у меня та же самая ситуация, но команда не много другая:

C#
1
String command = "cd /home/ubuntu/server/vinste/2; screen -A -m -d -S vinste.2 ./samp03svr";
Если результат смотреть, то тоже пустая строка. Что не так делаю? Если в путти такую команду вбить, всё работает.

Добавлено через 2 минуты
Вопрос решен) не верный путь был

Добавлено через 47 минут
Fedor_Fedorov, Хм.. А как получить вывод команды следующего рода:

C#
1
cd /home/server; nano server.cfg
В путти открывается файл и там его данные.
А если через c# то выводит пустой результат. Как вывести данные файла?
0
36 / 32 / 23
Регистрация: 28.12.2015
Сообщений: 264
21.10.2016, 21:27  [ТС] 20
vinste, можно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using (var sftp = new SftpClient(данные от sftp))
{
    try
    {
        sftp.Connect();
        string readText = sftp.ReadAllText("путь к файлу");// запишет в readText содержимое файла
        label1.Text = readText;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        sftp.Disconnect();
    }
}
1
21.10.2016, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2016, 21:27
Помогаю со студенческими работами здесь

Выполнение команд в консоли. Как выполните вход в определенный каталог
подскажите пожалуйста, как выполните вход в определенный каталог... Использую код для запуска...

Shutdown в C# выполнение команд, через вин-форму, как в ком.строке)
Доброго времени суток! Небольшая предыстория, для ясности: Я только начинаю знакомиться с...

Try-Catch. Как продолжить выполнение следующих команд за "проблемной"
К примеру есть такой код: try { for (int index = 0; index < BodyData.Rows.Count; index++) {...

Выполнение команд консольной программы из другой программы
Подскажите пожалуйста можно ли получить контроль над консольной прогой из другой самописной проги....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru