LoxBerry::System::execute

($exitcode, $output) = execute( %params );


This function executes a shell command, and returns exitcode and it's output. With named parameters, also logging is done into a LoxBerry::Log object.

LoxBerry 2.0

This function is available starting with LoxBerry V2.0. If you use that function, set this minimum version in your plugin.cfg.

The function always returns the exitcode and the output of the command. With additional parameters, you can directly log the execution state.

The function requires a hash of parameters. If no hash, but only a single string is given, this string is used as the command.

Abstract

use LoxBerry::System;

# Simply execute a command, without anything
my ($exitcode) = execute( "ls -l /opt/loxberry" );

# Get also the output of ls
my ($exitcode, $output) = execute( "ls -l /opt/loxberry" );

# Use a log object to log to
my ($exitcode, $output) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log
} );

# Log to a LoxBerry::Log object
# Default messages are written as intro text, for success or failure.
my ($exitcode) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log,
} );	

# Log to a LoxBerry::Log object
# ignoreerrors: Independent of the execution result, always OK is logged 
# Available from LoxBerry 3.0
my ($exitcode) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log,
	ignoreerrors => 1
} );	

# Userdefined messages in the log
my ($exitcode) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log,
	intro => "Getting directory listing...",
	ok => "Directory listing received successfully",
	error => "Could not query directory listing."
} );	

# Usually, exitcode 0 is OK. You can change the exitcode that should identify OK
my ($exitcode) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log,
	intro => "Getting directory listing...",
	ok => "Directory listing received successfully",
	error => "Could not query directory listing.",
	okcode => 100
} );	

# On error, an ERROR event is written to the log. Use the warn instead of the error parameter to WARN.
my ($exitcode) = execute( { 
	command => "ls -l /opt/loxberry",
	log => $log,
	intro => "Getting directory listing...",
	ok => "Directory listing received successfully",
	warn => "Could not query directory listing.",
} );	


Parameter List

ParameterMandatoryDescription
commandyesThe command to be executed.
log
A LoxBerry::Log object
introlog objectThe message logged before the execution (LOGINF)
oklog objectThe message logged on success (LOGOK)
errorlog objectThe message logged on error (LOGERR). The parameter is mutually exclusive with the warn parameter.
warnlog objectThe message logged on error (LOGWARN). On error, only the severity LOGWARN instead of LOGERR is used.  The parameter is mutually exclusive with the error parameter.
okcodelog objectDefault is 0 (exitcode 0 = LOGOK). Change the exitcode, that represents a successful execution. All other exitcodes are an error.
ignoreerrors
Regardless of the exitcode, always an LOGOK message is logged. Available from LoxBerry 3.0 (parameter is ignored below LB3.0)

Siehe auch