- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个简单的 WPF 应用程序,其唯一目的是使用 Renci SSH.net 库获取 SshClient 的工作目录并将其进一步传递给 SftpClient。
我似乎无法使用从 RunCommand(“pwd”)返回的绝对路径使用 sftpClient.ChangeDirectory 更改目录。我确定路径确实存在,因为 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 无法执行,我将如何以正确的方式解决这个问题?
非常感谢任何帮助。
最佳答案
问题是从 RunCommand 返回的字符串有空格,我所要做的就是:
workingDirectory = getSSHWorkingDirectory.Result.Trim();
我已经尝试了两天来解决这个问题,当我第一次发布这个问题时,我在 2 分钟后让它开始工作。
关于c# - 使用 Renci.SshNet SftpClient 更改具有绝对路径的目录导致 SftpPathNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501716/
当我使用 SSH.NET 通过 SFTP 传输文件时,我观察到一些奇怪的行为。我正在使用 SFTP 将 XML 文件传输到另一个服务(我不控制)进行处理。如果我使用 SftpClient.WriteA
我是 SFTP 服务器的新手。我尝试使用 SFTP 服务器上传和下载文件。这是一个独立的应用程序。从远程服务器到本地服务器下载文件时,我可以使用以下 SFTP 代码在指定路径下下载文件列表: sftp
我尝试使用 j2ssh SshClient 但没有成功。 我正在尝试使用 RSA 私钥 + 密码打开连接。我发现了一些我不确定是写入方法的东西: Properties properties = new
我想使用多线程的 Paramiko 从远程服务器下载文件。 我想到了两个解决方案,但我不确定哪个是正确的(或更好的)。 解决方案 1:假设 SFTPClient.get 是线程安全的(但我找不到任何提
我想将文件从远程服务器复制到本地。 import paramiko paramiko.util.log_to_file('/tmp/paramiko.log') # open transport us
在我使用 Renci SSH.NET SFTP 库将文件从 Windows 上传到远程计算机 (Ubuntu 16.04 LTS) 后,我正在尝试使用扩展文件属性来存储一些信息。但是属性没有得到保留?
我正在升级一个应用程序,该应用程序使用 Java 通过 sshtools 库通过 SSH 下载文件。 建立 ssh 连接后,我打开 SftpClient 并开始使用 SftpClient 的 get
我知道使用 Paramiko 的 SSHClient 类,您可以像这样设置一个宽松的丢失主机 key 策略: ssh = paramiko.SSHClient() ssh.set_missing_ho
我继承了一个基于 Java 的项目,其中包含一个 cron 作业,用于通过 SFTP 将文件上传到第三方服务器。这是相关代码。 String filePath = IUtil.getInstance(
我正在尝试远程读取 netcdf 文件。 我使用 Paramiko 包来读取我的文件,如下所示: import paramiko from netCDF4 import Dataset client
我正在开发一个简单的 WPF 应用程序,其唯一目的是使用 Renci SSH.net 库获取 SshClient 的工作目录并将其进一步传递给 SftpClient。 我似乎无法使用从 RunComm
我已经看到关于此错误的其他线程,但我随机遇到此错误。在 30 个连接中,有 12 个出现此错误。试图了解这是为什么,以及可能的解决方案是什么。 using (SftpClient client = n
我想以这样的事实作为序言:我仍然是 Paramiko 的菜鸟,所以这可能是完全不可能的。 我要开一个.wav我的计算机上的服务器上的文件,以便对其进行一些语音识别。为此,我使用 Paramiko 创建
我正在使用 SSH.NET通过安全的 SSH/SFTP 连接实现文件下载。我还需要能够看到下载进度,并能够在用户需要时中止下载。所以代码看起来像这样: ConnectionInfo conn = ne
当我尝试执行时,我收到“信息:远程计算机已断开连接:协议(protocol)错误:数据包太长:65580”错误: sUpload("server.host.com", "username", "/ho
我是一名优秀的程序员,十分优秀!