#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 &");
Комментариев нет:
Отправить комментарий