【问题标题】:Automate sending of files through sftp using copssh使用 copssh 通过 sftp 自动发送文件
【发布时间】:2010-09-09 10:32:31
【问题描述】:

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

【问题讨论】:

  • 您实际上是指 SFTP,还是指基于 SSH 的 FTP?您链接到的 CopSSH 页面表明它们不是一回事。
  • 我想我的意思是 SFTP。我们正在使用 CopSSH,其中包含一个 SFTP.exe 应用程序。 SFTP 不使用 SSH 提供安全连接吗?

标签: sftp labview copssh


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果 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 运行它。

    【讨论】:

    • 看起来这给了我需要的答案。 copssh 提供的 sftp 命令也有一个-b 开关。在网上找不到对此的任何参考,但使用-h 开关给了我正确的用法。看起来 sftp 在主机名sftp -b batchfile user@host 之前有开关和脚本。谢谢
    【解决方案3】:

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

    【讨论】:

    • 好的,我正在使用 copSSH 软件包附带的 sftp.exe,如果我对这些术语感到困惑,抱歉,这对我来说是全新的。 LabVIEW 仅支持基本的 TCP/IP 协议,因此我们无法在不使用一些外部代码的情况下通过安全协议传输文件。我确实查看了链接的 ActiveX 控件,但我们的数据中心团队建议使用 copSSH 中的 sftp 可执行文件来使用此应用程序。
    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多