Я работаю над простым приложением WPF, единственной целью которого является использование библиотеки Renci SSH.net для получения рабочего каталога SshClient и дальнейшей передачи его SftpClient.
Кажется, я не могу изменить каталог с помощью sftpClient.ChangeDirectory, используя абсолютный путь, возвращаемый из RunCommand ("pwd"). Я точно знаю, что путь существует, так как SshClient возвращает его, но, может быть, я что-то делаю не так или есть ошибка? В любом случае, вот мой код:
public static string ssh_host,
ssh_username,
ssh_password,
workingDirectory;
public MainWindow()
{
InitializeComponent();
ssh_host = "XXXXXXXXXX";
ssh_username = "XXXXXXXXXX";
ssh_password = "XXXXXXXXXX";
StartSSH();
}
private static void StartSSH()
{
using (var client = new SshClient(ssh_host, ssh_username, ssh_password))
{
try
{
client.Connect();
if (client.IsConnected)
{
Console.WriteLine("Client connected");
SshCommand getSSHWorkingDirectory = client.RunCommand("pwd");
workingDirectory = getSSHWorkingDirectory.Result;
Console.WriteLine("SSH working directory = " + workingDirectory);
// RESULT: SSH working directory = /customers/5/7/9/domain.com/httpd.private
using (var sftpClient = new SftpClient(ssh_host, ssh_username, ssh_password))
{
sftpClient.Connect();
if (sftpClient.IsConnected)
{
Console.WriteLine("SFTP working directory = " + sftpClient.WorkingDirectory);
// RESULT: SFTP working directory = /customers/5/7/9/domain.com/httpd.www <- NOTE httpd.www
sftpClient.ChangeDirectory(workingDirectory);
// ERROR: Renci.SshNet.Common.SftpPathNotFoundException: No such file
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Как видите, возникает исключение при попытке изменить каталог, полученный с помощью результата SshClient RunCommand.
Мой вопрос: почему ChangeDirectory не выполняется, и как мне правильно решить эту проблему?
Любая помощь горячо приветствуется.