Страницы

Поиск по вопросам

вторник, 17 декабря 2019 г.

SSH: вход в директорию (cd)

#c_sharp #ssh #клиент_сервер


Создал на форме кнопку (button) и при нажатии, хочу чтобы отсылалась команда на удаленный
сервер (запуск игрового сервера), но не получается, хотя через putty всё работает прекрасно.

Вот код:

private void button2_Click(object sender, EventArgs e)
{
    PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo("ip", port,
"user", "password");
    using (var client = new SshClient(connectionInfo))
    {
        try
        {
            client.Connect();
            if (client.IsConnected)
            {
                client.RunCommand("cd srv-cr-mp-c3-linux");
                client.RunCommand("nohup ./samp03svr-cr &");
            }
            else
            {
                label1.Text = "Ошибка";
            }
        }
        catch (Exception)
        {
            label1.Text = "Ошибка";
        }
        finally
        {
            client.Disconnect();
        }
    }
}


Подключение проходит успешно, но не работает команда входа в директорию, а за ней,
соответственно, и вторая команда. Потому что вторая команда должна выполняться в папке
srv-cr-mp-c3-linux. Пробовал делать вход в другую (созданную) папку, но всё равно не
работает. Права ставил 777. Подскажите, пожалуйста, в чем может быть дело?
    


Ответы

Ответ 1



Эти методы выполняются из рабочей директории: // ... { client.RunCommand("cd srv-cr-mp-c3-linux"); client.RunCommand("nohup ./samp03svr-cr &"); } // ... Каждый раз, когда вызываешь RunCommand(). Тебе нужно для client указать workingDir, либо выполнить cd srv-cr-mp-c3-linux | nohup ./samp03svr-cr &, тогда сначала ты переходишь в директорию, а там выполняешь что тебе нужно. Линукса под рукой нет, могу ошибиться, еще попробуй cd srv-cr-mp-c3-linux && nohup ./samp03svr-cr & - это по очереди выполнит команды.

Ответ 2



Забыл отписаться, но лучше поздно, чем никогда. client.RunCommand("cd srv-cr-mp-c3-linux; nohup ./samp03svr-cr &");

Комментариев нет:

Отправить комментарий