赞
踩
目录
如果您想使用SFTP连接进行文件传输,那么市场上有几种付费/许可工具,其中一些也很难工作。因此,使用这些工具进行简单的文件传输需要非常复杂的编码。
最近,我的一个客户将他们的文件传输服务器FTP更改为SFTP,然后我做了一段时间的研究,以找到使用简单/更少的C#代码进行管理的最佳方法,而无需任何付费工具。我在这个例子中使用了PSFTP。
我们大多数人都知道PuTTY。PuTTY是适用于32位Windows系统的免费SSH、Telnet和Rlogin客户端。PSFTP 是PuTTY SFTP客户端,是一种使用SSH连接在计算机之间安全传输文件的工具。
示例:主机名或FTP服务器:ftpdev.mycompany.com
用户名:ftptestuser
密码:ftptestpassword
我将在我的编码中使用此信息,但是您需要将其替换为有效的信息。
请按照以下步骤操作:
第1步(安装PuTTY)
下载PuTTY 并安装在您的计算机中(免费)。它将安装在默认路径 C:\Program Files (x86)\PuTTY 中。
第2步(授权PSFTP)
这是一个强制性步骤,您需要这样做,因为它将首次接受来自SFTP服务器的SSH证书。因此,在完成C#编码之前,这是必需的。
请遵循任一选项a或b:
您将看到一个窗口,如下所示:
然后尝试手动连接。
命令 1:打开 ftpdev.mycompany.com
命令 2:y
命令 3:输入用户名
命令 4:输入密码
命令 5:您可以尝试一些测试命令来验证SFTP文件和文件夹列表。
喜欢Help;quit;ls;get;put等[更多信息可在此链接找到]。
我们需要安装PuTTY(免费工具)来开发这个程序,但是您不需要任何PuTTY的经验。您只需要按照提供的说明进行操作即可。
在Microsoft Visual Studio中创建一个简单的控制台应用。
App.config:
- <appSettings>
- <!--psftp path-->
- <add key ="psftp" value="C:\\Program Files (x86)\\PuTTY\\psftp.exe"/>
-
- <!--ftp server and credentials-->
- <add key ="user" value="ftptestuser"/>
- <add key ="pass" value="ftptestpassword"/>
- <add key ="ftpserver" value="ftpdev.mycompany.com"/>
- </appSettings>
Program.cs:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Configuration;
- using System.IO;
- using System.Diagnostics;
-
- namespace PSFTP_Demo
- {
- class Program
- {
- static void Main(string[] args)
- {
- /*Example of SFTP using PSFTP */
-
- /* In this example, the local files are placed in bin/debug folder
- since I am using AppDomain.CurrentDomain.BaseDirectory path, you can
- change it but make sure your run time code is accessible to that path.
- */
-
- /*Send file from local folder to FTP server, send.sftp is a
- batch file, look the command in the file from the solution
- */
- PSFTP_TransferFile("send.sftp");
- /*Receive file from FTP server to local folder
- recieve.sftp is a batch file, look the command
- in the file from the solution
- */
- PSFTP_TransferFile("recieve.sftp");
- /*delete file from FTP server
- delete.sftp is a batch file,
- look the command in the file from the solution
- */
- PSFTP_TransferFile("delete.sftp");
- }
- private static void PSFTP_TransferFile(string batchFile)
- {
- try
- {
- Process myProcess = new Process();
- myProcess.StartInfo.UseShellExecute = true;
- myProcess.StartInfo.FileName =
- ConfigurationManager.AppSettings["psftp"].ToString();
- var args1 = ConfigurationManager.AppSettings["user"].ToString() + "@"
- + ConfigurationManager.AppSettings["ftpserver"].ToString() +
- " -pw " +
- ConfigurationManager.AppSettings["pass"].ToString() +
- " -batch -be -b " + AppDomain.CurrentDomain.BaseDirectory +
- "PSFTP-BatchFile\\" + batchFile;
- myProcess.StartInfo.Arguments = args1;
- myProcess.StartInfo.CreateNoWindow = true;
- var abc = myProcess.Start();
- myProcess.WaitForExit();
- }
- catch (Exception ex)
- {
- Console.WriteLine("Error occurred : " + ex.Message);
- }
- }
- }
- }
您也可以从本文顶部的链接下载完整的解决方案。
通常,我们在自动化环境中使用SFTP进行文件传输。如果您不正确地配置上述应用程序,您可能会发现很难从Windows 任务计划程序运行它。
我将提供在Windows任务计划程序中进行配置的步骤。请按照我的指示进行操作:
在Windows中,转到“开始”->“控制面板”-“>”管理工具“-”>任务计划程序“->然后右键单击”任务计划程序库“->创建任务。
本文将帮助您使用PSFTP构建SFTP连接。您可以根据需要添加更多功能。
https://www.codeproject.com/Articles/1175314/Secure-FTP-or-SFTP-using-Putty-PSFTP-with-Csharp-O
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。