我们每个月都会使用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,但我们确实需要使用这个特定的应用程序。
答案 0 :(得分:2)
我一直在使用WinSCP,它有一个命令行版本winscp.com。它支持sftp并允许对文件夹和文件进行同步,keepuptodate,获取,放置和删除。一句警告,keepuptodate取决于一个不间断的连接。虽然WinSCP可以自动重制连接,但keepuptodate不能。我怀疑它是基于微软的.NET SystemIO FileSystemWatcher。因此,我进行常规同步以在远程目标上保留源文件夹树的镜像。
答案 1 :(得分:1)
您正在混合使用SSH和SFTP。 SSH打开一个安全连接,但SFTP是一个单独的协议,它通过SSH连接运行,需要一个单独的隧道。在OpenSSH(以及它的Windows端口,copSSH)中,它是执行SFTP的sftp.exe应用程序。
现在关于FTP与SFTP。请查看解释the difference between SFTP and FTP(S)的文章。如果LabView支持FTP,则在您需要执行SFTP传输时,这对您没有帮助。
我不知道您是否可以在LabView中使用外部ActiveX控件。如果可以,欢迎您查看我们的SFTP ActiveX control,以便您进行转帐。如果您只能调用外部应用程序,那么您必须使用copSSH的sftp.exe。
答案 2 :(得分:1)
如果copssh的sftp.exe是命令行实用程序,并且您的LabVIEW版本中的System Exec具有“标准输入”终端(至少从8.5开始),您应该能够简单地连接您想要的命令sftp。 exe进入标准输入终端。
如果因某种原因无法使用,您可以使用PuTTY代替copssh吗? documentation for PuTTY's PSFTP component表示它可以使用-b命令行开关在脚本文件中执行一系列命令,例如
psftp user@hostname -b myscript.scr
因此您可以让LabVIEW程序创建脚本文件,然后使用System Exec运行它。