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