2013-03-19 31 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脚本就会暂停。