NAME

Rex::Commands::Run - Execute a remote command

DESCRIPTION

With this module you can run a command.

SYNOPSIS

my $output = run "ls -l";
sudo "id";

EXPORTED FUNCTIONS

run($command [, $callback])

This function will execute the given command and returns the output.

task "uptime", "server01", sub {
   say run "uptime";
   run "uptime", sub {
      my ($stdout, $stderr) = @_;
      my $server = Rex::get_current_connection()->{server};
      say "[$server] $stdout\n";
   };
};
can_run($command)

This function checks if a command is in the path or is available.

task "uptime", sub {
   if(can_run "uptime") {
      say run "uptime";
   }
};
sudo

Run a command with sudo. Define the password for sudo with sudo_password.

You can use this function to run one command with sudo privileges or to turn on sudo globaly.

user "unprivuser";
sudo_password "f00b4r";
sudo -on;   # turn sudo globaly on
    
task prepare => sub {
   install "apache2";
   file "/etc/ntp.conf",
      source => "files/etc/ntp.conf",
      owner  => "root",
      mode   => 640;
};

Or, if you don't turning sudo globaly on.

task prepare => sub {
   file "/tmp/foo.txt",
      content => "this file was written without sudo privileges\n";
       
   # everything in this section will be executed with sudo privileges
   sudo sub {
      install "apache2";
      file "/tmp/foo2.txt",
         content => "this file was written with sudo privileges\n";
   };
};

Run only one command within sudo.

task "eth1-down", sub {
  sudo "ifconfig eth1 down";
};