Security Advisories (1)
CVE-2026-94140 (2026-10-21)

Rex versions through 1.16.1 for Perl accept an unknown SSH host key for remote rsync transfers because sync hardcodes StrictHostKeyChecking=no. Every remote branch of sync builds its ssh command with that option, for password authentication, for private-key authentication and for the fallback. The ssh options a caller sets through set_openssh_opt reach the OpenSSH transport but not this command, so there is no configuration that restores host key checking for the transfer. An attacker who can redirect the connection before the real host key is known presents their own and the transfer proceeds: under password authentication sync sends the connection password to that server, an upload writes the selected local files to it, and a download writes what it returns to the local destination.

NAME

Rex::Commands::Cron - Simple Cron Management

DESCRIPTION

With this Module you can manage your cronjobs.

SYNOPSIS

use Rex::Commands::Cron;

cron add => "root", {
       minute => '5',
       hour  => '*',
       day_of_month   => '*',
       month => '*',
       day_of_week => '*',
       command => '/path/to/your/cronjob',
     };

cron list => "root";

cron delete => "root", 3;

EXPORTED FUNCTIONS

cron_entry($name, %option)

Manage cron entries.

cron_entry "reload-httpd",
  ensure       => "present",
  command      => "/etc/init.d/httpd restart",
  minute       => "1,5",
  hour         => "11,23",
  month        => "1,5",
  day_of_week  => "1,3",
  day_of_month => "1,3,5",
  user         => "root",
  on_change    => sub { say "cron added"; };

# remove an entry
cron_entry "reload-httpd",
  ensure       => "absent",
  command      => "/etc/init.d/httpd restart",
  minute       => "1,5",
  hour         => "11,23",
  month        => "1,5",
  day_of_week  => "1,3",
  day_of_month => "1,3,5",
  user         => "root",
  on_change    => sub { say "cron removed."; };

cron($action => $user, ...)

With this function you can manage cronjobs.

List cronjobs.

use Rex::Commands::Cron;
use Data::Dumper;

task "listcron", "server1", sub {
  my @crons = cron list => "root";
  print Dumper(\@crons);
};

Add a cronjob.

This example will add a cronjob running on minute 1, 5, 19 and 40. Every hour and every day.

use Rex::Commands::Cron;
use Data::Dumper;

task "addcron", "server1", sub {
   cron add => "root", {
     minute => "1,5,19,40",
     command => '/path/to/your/cronjob',
   };
};

This example will add a cronjob running on the 1st, 3rd and 5th day of January and May, but only when it's a Monday or Wednesday. On those days, the job will run when the hour is 11 or 23, and the minute is 1 or 5 (in other words at 11:01, 11:05, 23:01 and 23:05).

task "addcron", "server1", sub {
   cron add => "root", {
     minute => "1,5",
     hour  => "11,23",
     month  => "1,5",
     day_of_week => "1,3",
     day_of_month => "1,3,5",
     command => '/path/to/your/cronjob',
   };
};

Delete a cronjob.

This example will delete the 4th cronjob. Counting starts with zero (0).

task "delcron", "server1", sub {
   cron delete => "root", 3;
};

Managing Environment Variables inside cron.

task "mycron", "server1", sub {
   cron env => user => add => {
     MYVAR => "foo",
   };

   cron env => user => delete => $index;
   cron env => user => delete => 1;

   cron env => user => "list";
};