2013-03-19 273 views
0

僅供參考,我是一個Perl的完全新手,因爲在我可以拼寫它,只有更多,所以我試圖學習。我試圖完成的是使用SFTP將文件從Windows機器傳輸到Linux機器。暫停perl腳本,同時SFTP傳輸文件

我注意到Perl發出SFTP get命令,但不等待傳輸完成,所以當Perl腳本嘗試使用文件時,它找不到它。我知道有睡眠命令,但是文件的數量和大小會每週變化一次,所以使用睡眠(600)看起來有點愚蠢。

有沒有一種標準的方法來暫停Perl腳本,直到SFTP完成傳輸所有必需的文件?

TIA。

+1

你是如何發行sftp命令的? – geoffspear 2013-03-19 16:30:44

+3

你應該使用一個模塊,比如'Net :: SFTP',而不是對命令行工具進行脫殼。 – Borodin 2013-03-19 17:17:00

+0

@Wooble - 我所看到的是打開一個SFTP管道,然後使用'print SFTP'get remoteFileName \ n';' – BigFish 2013-03-19 18:56:42

回答

0

使用Net :: SFTP可能已經解決了這個難題,但我的工作場所不允許我下載和安裝東西,特別是在生產中。因此,我沒有等待典型的官僚作風,而是做了更多的挖掘並發現了這一點:

通過使用包含SFTP命令的單獨文件在批處理模式下調用SFTP,Perl腳本必須等待SFTP完成執行命令在單獨的「命令」文件中。因此,通過使用批處理模式選項,只要SFTP完成文件傳輸工作,Perl腳本就會暫停。