我正在使用 Visual Studio 和 C# Web 應(yīng)用程序。我正在嘗試使用 SSH.NET 將文件從 Windows 服務(wù)器移動(dòng)到遠(yuǎn)程 Linux 服務(wù)器SshClient。我正在嘗試下面的代碼,但文件沒(méi)有被復(fù)制。var filespath = FUupload.PostedFile.FileName.Replace("\\", "/");SshClient sshclient = new SshClient("hostname", "username", "pwd");sshclient.Connect();ShellStream stream = sshclient.CreateShellStream("cmsd", 80, 24, 800, 600, 1024);Label1.Text = sendCommand("sudo su - wwabc1", stream).ToString();Label2.Text = sendCommand("whoami", stream).ToString();Label3.Text = sendCommand("cp /" + filespath + " /wwabc1/test/folder_one/test/", stream).ToString();public StringBuilder sendCommand(string customCMD){ 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;}我沒(méi)有收到任何錯(cuò)誤,但文件沒(méi)有移動(dòng)。
1 回答

明月笑刀無(wú)情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
您不能使用 shell 命令在本地和遠(yuǎn)程機(jī)器之間傳輸文件。
想象一下,您正在使用 SSH 終端客戶端(PuTTY 行)。你可以cp在 PuTTY 中使用命令上傳文件嗎?- 你不能。
您必須使用 SFTP 協(xié)議。
SftpClient sftpclient = new SftpClient("hostname", "username", "pwd");
sftpclient.connect();
string localFilename = FUupload.PostedFile.FileName;
string remoteFilename = "/wwabc1/test/folder_one/test/" + Path.GetFileName(filename);
using (var fileStream = File.OpenRead(localFilename))
{
sftpClient.UploadFile(fileStream, remoteFilename);
}
- 1 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報(bào)
0/150
提交
取消