1

每个月我们都会使用 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,但我们确实需要使用这个特定的应用程序。

4

3 回答 3

2

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

于 2010-10-26T09:25:35.207 回答
1

您正在混合使用 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。

于 2010-09-09T11:55:15.153 回答
1

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

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

psftp user@hostname -b myscript.scr

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

于 2010-09-09T14:42:48.743 回答