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

With this module you can run a command.

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

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";
};
};
This function checks if a command is in the path or is available.
task "uptime", sub {
if(can_run "uptime") {
say run "uptime";
}
};
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";
};