使用 copssh 通过 sftp 自动发送文件

发布于 2024-09-18 00:13:39 字数 845 浏览 9 评论 0原文

每个月我们都会使用 FTP 将报告发送到服务器。我们对数据库运行查询来创建文件,然后使用 LabVIEW 中的 ftp 功能进行传输。它在 Windows 系统上运行。

这工作正常,但现在我们必须切换到使用 SFTP,并且推荐使用 CopSSH 软件包。由于 LabVIEW 没有原生 SFTP 功能,我们正在研究如何使用 CopSSH 中的 sftp.exe 应用程序。

在命令提示符下,我们设置了加密并使用 sftp username@host 建立了初始连接并输入了密码。服务器端团队已确认这一点,因此已建立与服务器的连接。现在我们只使用sftp username@host并且不需要密码。

我们遇到的困难是如何从 LabVIEW 代码启动传输。我们可以使用 System Exec VI 调用系统命令,但是有没有办法将函数列表传递给 SFTP 可执行文件?

当我们在命令提示符下键入文件时,用于传输文件的命令是:

sftp username@host
put c:/Data/File1.txt remoteFile1
put c:/Data/File2.txt remoteFile2
put c:/Data/File3.txt remoteFile3
quit

这可以在命令提示符下运行,但我希望仅使用要传输的文件列表来调用 sftp 可执行文件。我不认为这特定于 LabVIEW,因为您可以使用批处理文件来运行预定作业。

LabVIEW可以调用ActiveX和.net,但我们确实需要使用这个特定的应用程序。

Every month we send reports to a server using FTP. We run a query on a database to create the files then use the ftp functionality in LabVIEW to do the transfer. This runs on a Windows system.

This works fine but now we have to switch to using SFTP and the CopSSH package has been recommended. As LabVIEW has no native SFTP functionality we are looking at how we can use the sftp.exe application from CopSSH.

From the command prompt we have set up the encryption and made the initial connection using sftp username@host and entered the password. This has been confirmed by the team on the server side so connection to the server is set up. Now we just use sftp username@host and no password is required.

Where we are struggling is how to initiate the transfer from our LabVIEW code. We are able to call system commands using the System Exec VI but is there a way to pass a list of functions to the SFTP executable?

The commands used to transfer the files when we type it at the command prompt are:

sftp username@host
put c:/Data/File1.txt remoteFile1
put c:/Data/File2.txt remoteFile2
put c:/Data/File3.txt remoteFile3
quit

This works from the command prompt but I am looking to just call the sftp executable with a list of files to transfer. I don't think this would be specific to LabVIEW as you could use a batch file to run from a scheduled job.

LabVIEW can call ActiveX and .net but we really need to use this specific application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凌乱心跳 2024-09-25 00:13:39

我一直在使用 WinSCP,它有一个命令行版本,winscp.com。它支持 sftp,并允许同步、保持更新、获取、放置和删除文件夹和文件。警告一句,keepuptodate 依赖于不间断的连接。尽管 WinSCP 可以自动重新建立连接,但 keepuptodate 却不能。我怀疑它是基于微软的.NET SystemIO FileSystemWatcher。因此,我定期进行同步,以在远程目标上保留源文件夹树的镜像。

I have been using WinSCP which has a command line version, winscp.com. It supports sftp and allows synchronize, keepuptodate, get, put and delete on folders and files. One word of warning, keepuptodate depends on an unbroken connection. Although WinSCP can remake a connection automatically, keepuptodate cannot. I suspect it is based on Microsoft's .NET SystemIO FileSystemWatcher. I therefore do a regular synchronize to keep a mirror of my source folder tree on the remote target.

浮光之海 2024-09-25 00:13:39

如果 copssh 的 sftp.exe 是一个命令行实用程序,并且您的 LabVIEW 版本中的 System Exec 具有“标准输入”终端(至少自 8.5 以来存在),您应该能够简单地连接您希望 sftp.exe 运行的命令进入标准输入终端。

如果由于某种原因不起作用,您可以使用 PuTTY而不是 copssh? PuTTY 的 PSFTP 组件的文档 说它可以使用 -b 命令行开关执行脚本文件中的一系列命令,例如

psftp user@hostname -b myscript.scr

,您可以让 LabVIEW 程序创建脚本文件,然后使用 System Exec 运行它。

If copssh's sftp.exe is a command line utility, and System Exec in your version of LabVIEW has the 'standard input' terminal (present at least since 8.5), you should be able to simply wire the commands you want sftp.exe to run into the standard input terminal.

If that doesn't work for some reason, could you use PuTTY instead of copssh? The documentation for PuTTY's PSFTP component says that it can execute a sequence of commands in a script file using the -b command line switch, e.g.

psftp user@hostname -b myscript.scr

so you could have your LabVIEW program create the script file then run it with System Exec.

送君千里 2024-09-25 00:13:39

您正在混合使用 SSH 和 SFTP。 SSH 打开安全连接,但 SFTP 是一个单独的协议,它在 SSH 连接上运行,需要单独的隧道。在 OpenSSH(它是 Windows 端口,copSSH)中,执行 SFTP 的是 sftp.exe 应用程序。

现在谈谈 FTP 与 SFTP。请查看一篇解释SFTP 和 FTP 之间区别的文章(S)。如果 LabView 支持 FTP,那么当您需要执行 SFTP 传输时这对您没有帮助。

我不知道你是否可以在LabView中使用外部ActiveX控件。如果可以的话,欢迎您查看我们的SFTP ActiveX 控件,这将让您进行转账。如果您所能做的就是调用外部应用程序,那么您必须使用 copSSH 的 sftp.exe。

You are mixing SSH and SFTP. SSH opens a secure connection, but SFTP is a separate protocol which is run over SSH connection and requires a separate tunnel. In OpenSSH (and it's Windows Port, copSSH) it's sftp.exe application that does SFTP.

Now about FTP vs SFTP. Please check an article that explains the difference between SFTP and FTP(S). If LabView supports FTP, this doesn't help you when you need to perform SFTP transfers.

I don't know whether you can use external ActiveX controls in LabView. If you can, you are welcome to check our SFTP ActiveX control, that will let you do the transfer. If all you can do is call external application, then you'd have to use copSSH's sftp.exe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文