我正在编写一个 perl 程序,我想从用户那里接受各种“文件名”,包括/home/foo/bar.txt
和scp://server/some/file.txt
或其他什么。然后我想,如果我能找到一个 cmd 行程序来执行此操作,我会找到一个也能执行此操作的 perl 模块,或者我将通过 perl 的system()
调用来运行它。
我想到了 cURL 和/或 lftp,但在 ubuntu 上,我得到:
> curl scp://server/some/file
curl: (1) Protocol scp not supported or disabled in libcurl
> lftp -c 'get scp://server/some/file'
get: scp - not supported protocol
对于curl,我调查了为什么它出现在Ubuntu上并发现curl 和 pycurl 编译时不支持 sftp- 基本上是这样不会发生除非我重新编译 libcurl*,但我不想要求我的用户对 libcurl* 应用补丁。
当然,我可以自己写,如下所示:
if ($proto eq 'scp') {
# handle scp
open I, 'scp ...' or die;
} elsif ($proto eq 'http') {
open I, 'wget ...' or die;
} else {
# whatever
}
但我更希望其他人用大量协议来编写/测试/调试它,我很惊讶我找不到任何开箱即用的东西!你知道我错过了什么吗?
答案1
我相信协议名称是 sftp,而不是 scp。
在我的系统中,以下工作正常:lftp -c 'get sftp://someserver/file'
,以及 ftp 和 http。