2010-09-09 66 views
1

我們每個月都會使用FTP向服務器發送報告。我們對數據庫運行查詢以創建文件,然後使用LabVIEW中的ftp功能進行傳輸。這在Windows系統上運行。使用copssh通過sftp自動發送文件

這工作正常,但現在我們必須切換到使用SFTP和CopSSH包已被推薦。由於LabVIEW沒有本地SFTP功能,我們正在考慮如何使用CopSSH的sftp.exe應用程序。

從命令提示符我們設置了加密並使用sftp [email protected]進行了初始連接並輸入了密碼。這已經被服務器端的團隊證實,所以建立了到服務器的連接。現在我們只使用sftp [email protected],不需要密碼。

我們正在努力的是如何開始從我們的LabVIEW代碼轉移。我們可以使用System Exec VI調用系統命令,但有沒有辦法將一系列函數傳遞給SFTP可執行文件?

使用,當我們在命令提示符下鍵入要傳輸的文件的命令是:

sftp [email protected] 
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

你真的指SFTP,還是你的意思是通過SSH的FTP?您鏈接到的CopSSH頁面表明他們不是同一件事。 – nekomatic 2010-09-09 11:32:25

+0

我想我的意思是SFTP。我們正在使用包含SFTP.exe應用程序的CopSSH。 SFTP不使用SSH來提供安全連接? – Swinders 2010-09-09 12:18:51

回答

1

如果copssh的sftp.exe是一個命令行實用程序,並且您的LabVIEW版本中的System Exec具有「標準輸入」終端(至少在8.5之後出現),那麼您應該能夠簡單地連接你想要的命令sftp .exe運行到標準輸入終端。

如果由於某種原因不起作用,您可以使用PuTTY代替copssh嗎? documentation for PuTTY's PSFTP component表示它可以使用-b命令行開關在腳本文件中執行一系列命令,例如,

psftp [email protected] -b myscript.scr 

所以你可以讓你的LabVIEW程序創建腳本文件,然後用System Exec運行它。

+0

看起來像這給了我需要的答案。 copssh提供的sftp命令也有一個'-b'開關。在網上找不到任何參考,但使用'-h'開關給了我正確的用法。看起來sftp在主機名'sftp -b batchfile user @ host'之前有開關和腳本。謝謝 – Swinders 2010-09-09 15:26:54

1

您正在混合使用SSH和SFTP。 SSH打開一個安全連接,但SFTP是一個單獨的協議,它通過SSH連接運行並需要單獨的隧道。在OpenSSH中(它是Windows端口,copSSH),它是執行SFTP的sftp.exe應用程序。

現在關於FTP vs SFTP。請查看解釋the difference between SFTP and FTP(S)的文章。如果LabView支持FTP,當您需要執行SFTP傳輸時,這不會對您有所幫助。

我不知道您是否可以在LabView中使用外部ActiveX控件。如果可以,歡迎您檢查我們的SFTP ActiveX control,這將讓你做轉移。如果你所能做的只是調用外部應用程序,那麼你必須使用copSSH的sftp.exe。

+0

好吧,我正在使用copSSH軟件包附帶的sftp.exe,很抱歉,如果我對這些術語感到困惑,這對我來說都是新鮮事。 LabVIEW僅支持基本的TCP/IP協議,因此我們無法通過安全協議傳輸文件,而無需使用某些外部代碼。我確實查看了鏈接的ActiveX控件,但對於此應用程序,我們的數據中心團隊推薦使用copSSH的sftp可執行文件。 – Swinders 2010-09-09 12:40:06

2

我一直在使用WinSCP,它有一個命令行版本winscp.com。它支持sftp,並允許同步,keepuptodate,獲取,放置和刪除文件夾和文件。警告一句話,keepuptodate取決於一個完整的連接。儘管WinSCP可以自動重建連接,但keepuptodate不能。我懷疑它是基於微軟的.NET SystemIO FileSystemWatcher。因此,我會定期進行同步以保留遠程目標上的源文件夾樹的鏡像。