【发布时间】:2019-01-15 21:06:36
【问题描述】:
我正在尝试将文件从远程 unix 服务器中的一个文件夹复制到另一个文件夹。我正在使用 C# 中的 Web 应用程序并使用 Renci SSH.Net 进行该过程。当我使用 Cp 命令时,在 readline 中添加了额外的空间,我收到了错误,因为
cp: cannot stat `folder1/folder_two/fol_three/changecolumn.txt': 没有这样的文件 或目录
我使用了以下代码:
SshClient sshclient = new SshClient("hostname", "username", "pwd");
sshclient.Connect();
ShellStream stream = sshclient.CreateShellStream("cmsd", 80, 24, 800, 600, 1024);
sendCommand("sudo su - wwabc1", stream).ToString();
sendCommand("whoami", stream).ToString();
sendCommand("cp / folder1/folder_two/fol_three/" + uploadedfileName + uploadedfileExt + " /Target1/folder1/folder_two/target/", stream).ToString();
public StringBuilder sendCommand(string customCMD, ShellStream stream)
{
StringBuilder answer;
var reader = new StreamReader(stream);
var writer = new StreamWriter(stream);
writer.AutoFlush = true;
WriteStream(customCMD, writer, stream);
answer = ReadStream(reader);
return answer;
}
private void WriteStream(string cmd, StreamWriter writer, ShellStream stream)
{
writer.WriteLine(cmd);
while (stream.Length == 0)
{
Thread.Sleep(500);
}
}
private StringBuilder ReadStream(StreamReader reader)
{
StringBuilder result = new StringBuilder();
string line;
while ((line = reader.ReadLine()) != null)
{
result.AppendLine(line);
}
return result;
}
结果数据如下:
cp / folder1/folder_two/fol_three/changecolumn
< cp / folder1/folder_two/fol_three/changecolumnn ame.txt /wwabc1/Target1
</test_files/changecolumnname.txt /wwabc1/Target1/ folder1/folder_two/target/
cp: omitting directory `/'
cp: cannot stat `folder1/folder_two/fol_three//changecolumnname.txt': No such file or directory
[wwabc1@host ~]$
[wwabc1@host ~]$
中间添加了太多空格,但我传递的信息没有中间的空格。如何解决这个问题?谢谢
【问题讨论】:
-
我猜问题出在
uploadedfileName和uploadedfileExt,你没有提供源代码 -
uploadedfileName 和 UploadedfileExt 包含的数据为 -changecolumnname.txt
-
是的,但是是吗?您的错误消息表明情况并非如此。试试
var s = $"cp / folder1/folder_two/fol_three/{uploadedfileName}{uploadedfileExt} /Target1/folder1/folder_two/target/"看看你会得到什么。 -
顺便说一句,如果你想将一个流复制到另一个流,你可以这样做
stream1.CopyTo(stream2) -
我应该在初始文件夹1的前面添加主机名吗?