Я пытаюсь скопировать файлы из одной папки в другую на удаленном сервере unix. Я использую веб-приложение на С# и использую Renci SSH.Net для этого процесса. Когда я использую команду Cp, в строке чтения добавляется дополнительное пространство, и я получаю сообщение об ошибке
cp: невозможно указать `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
, для которых вы не предоставили источник - person Neil   schedule 15.01.2019var s = $"cp / folder1/folder_two/fol_three/{uploadedfileName}{uploadedfileExt} /Target1/folder1/folder_two/target/"
и посмотрите, что у вас получится. - person Neil   schedule 15.01.2019stream1.CopyTo(stream2)
- person Neil   schedule 15.01.2019uploadedfileName
иuploadedfileExt
, покажите нам минимально воспроизводимый пример - с буквальным примеромcp
, без каких-либо переменных. - person Martin Prikryl   schedule 15.01.2019