这个想法是有一个中央控制器,可以管理许多主机的 cron。我看过Schedule::Cron和Config::Crontab
但是它们都没有提供远程功能。有一个看起来很有希望,IPC::PerlSSH,但不确定我是否了解如何使用IPC::PerlSSH运行 Config::Crontab
如果有人在这方面有经验,请告诉我。Perl 确实声称对 Linux 管理任务有好处,这似乎是最需要编写脚本的任务之一。但是只在本地机器上做,在 ssh'ng 进入它之后听起来并不有趣。
这个想法是有一个中央控制器,可以管理许多主机的 cron。我看过Schedule::Cron和Config::Crontab
但是它们都没有提供远程功能。有一个看起来很有希望,IPC::PerlSSH,但不确定我是否了解如何使用IPC::PerlSSH运行 Config::Crontab
如果有人在这方面有经验,请告诉我。Perl 确实声称对 Linux 管理任务有好处,这似乎是最需要编写脚本的任务之一。但是只在本地机器上做,在 ssh'ng 进入它之后听起来并不有趣。
IPC::PerlSSH
只需使用 SSH 远程执行 Perl 代码。问题是所有远程节点还必须安装Schedule::Cron
orConfig::Crontab
模块才能正常工作。
最好使用 SCP 库(例如Net::SCP
或Net::SCP::Expect
)简单地从远程节点引入感兴趣的 crontab,使用Cron
您选择的库在本地对其进行按摩,然后将按摩后的 crontab 上传回远程节点。使用这种方法,远程节点甚至不需要安装 Perl。
# untested!
use Net::OpenSSH;
use Config::Crontab;
my $ssh = Net::OpenSSH->new($host, ...);
$ssh->system({stdout_file => 'crontab.out'}, 'crontab -l');
my $cc = Config::Crontab->new;
$cc->read('crontab.out');
# manipulate $cc crontab here:
# ...
$cc->write('crontab.out.1');
$ssh->system({stdin_file => 'crontab.out.1'}, 'crontab -');