我是一个新手Perl程序员,需要将一些bash脚本翻译成Perl,以便从多台远程生产服务器的Apache日志中提取更有用的信息,并在本地计算机上进行处理。我需要尽可能地保持生产服务器的清洁。因此,在我的本地计算机上有两个单独的.pl文件:crawler.pl(原名为crawler.sh),负责从生产服务器获取有用的信息;reporter.pl(原名为reporter.sh)负责运行crawler并汇总从生产服务器检索的信息。
我想实现的目标是Perl的等效操作:
我想实现的目标是Perl的等效操作:
ssh "user@host" 'bash -s' < $crawler
其中 $crawler 是(曾经)本地计算机上 crawler.sh 的物理位置。
我希望 reporter.pl 打开一个 ssh 连接到生产服务器并远程执行 crawler.pl。大致如下:
use Net::SSH qw(ssh);
ssh($loginString,"perl -e $crawler");
显然这不可行,但希望你明白我的意思。
我知道可以通过将爬虫文件复制到生产服务器并在完成任务后删除它来实现此目的。但如果有更优雅的解决方案我会更加期待。
system()
,有可能吗? - Tsamaunk