通过sftp推送文件

客户希望我们使用SFTP(通过SSH的FTP)每天将数据文件推送到他们。 我们是100%的微软商店,没有Linuxpipe理员。 我正在寻找如何做到这一点的build议。 我已经看到了不同的应用程序通过SFTP自动发送文件,但我不知道它们是否是一个好方法。

您发现什么是在Microsoft环境中处理此问题的最简单方法?

我build议PSFTP作为将此数据传输到远程目标的客户端。 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上

他们的产品坚如磐石,并且从PUTTY的SSH客户端的成功中变得非常stream行。

你只需要一个SFTP客户端和脚本和时间表的方式。

  1. WinSCP对客户端软件非常普遍。 这是可脚本化的…
  2. 你会想使用任何你喜欢的,最好已经使用批处理,PowerShell,VBScript,KiXtart等等。
  3. 您可以使用计划任务中的内部计划进行计划。

这是简单的方法,使用所有本机工具,只有一个第三方组件。 棘手的位将是:

  1. 你的脚本的逻辑。 你将如何处理错误? 各种各样的错误 – 你失去了互联网,所以他们的一面倒下了。 您从中拉出的文件服务器configuration错误,发送后无法删除文件。 其实,这是另一个问题 – 你是否在发送后删除它们? 你正在喂一个pipe道,还是一个档案文件?
  2. 你将如何处理多个作业运行的可能性 – 上午1点的工作需要很长的时间,所以例如当上午2点开始时它仍然在运行。 您可以使用调度程序的内置function来处理其中的一些function,例如杀死耗时过长的任务。
  3. 这是否需要HA? 如果您的服务器出现故障,您是否需要另一台服务器来停止服务?

你可以想象得到你的脚本运行一个循环,并将其作为服务安装,所以你不必担心试图抓取相同文件的多个工作。

我一直在使用这个开放源代码/免费的.Net组件来传递文件到SFTP没有任何问题在过去的2年。

如果你引用程序集文件(Tamir.SharpSSH.dll + 2),在几行代码中你可以做SFTP ..

Sftp sftpClient = new Sftp(host, userName, password); sftpClient.Connect(); sftpClient.Put(filePath, @"filename.txt"); sftpClient.Close(); 

您可以开发一个Windows应用程序或一个Windows服务来提供fules

在这里下载汇编:

http://www.tamirgal.com/blog/page/SharpSSH.aspx

描述: SharpSSH是SSH2客户端协议套件的纯.NET实现。 它提供了一个用于与SSH服务器通信的API,并且可以集成到任何.NET应用程序中。 该库是JCraft公司的JSch项目C#端口,并以BSD样式许可证发布。

SharpSSH允许您使用类似于JSch API的API通过SSH通道读取/写入数据和传输文件。 另外,它提供了一些额外的包装类,它们为SSH通信提供了更简单的抽象。

如果您正在寻找一个脚本化和可自动化的SFTP客户端,它不仅可以在Windows上运行,而且可以在Windows中devise (它不模仿Linux风格的shell脚本,但是它使用了高级的面向对象语言,如JavaScript )你可能想看看Syncplify.me FTP脚本 。