Module mfutil.bash_wrapper
Expand source code
import bash
class BashWrapperException(Exception):
"""Specific exception class for BashWrapper objects."""
__message = None
__bash_wrapper = None
def __init__(self, message, bash_wrapper=None):
"""Constructor.
Args:
message (string): exception message
bash_wrapper (BashWrapper): bash wrapper object
"""
super(BashWrapperException, self).__init__(message)
self.__message = message
self.__bash_wrapper = bash_wrapper
def __repr__(self):
if self.__bash_wrapper is not None:
return "%s exception with message: %s and debug: %s" % \
(self.__class__.__name__, self.__message, self.__bash_wrapper)
else:
return Exception.__repr__(self)
def __str__(self):
return self.__repr__()
class BashWrapper(object):
"""Bash command/output wrapper."""
__bash_cmd = None
__bash_result_object = None
def __init__(self, bash_cmd):
"""Constructor.
The constructor executes the given bash command and store result code
and stdout/stderr inside the object.
You can use this object like this::
bash_wrapper = BashWrapper("ls /tmp")
if bash_wrapper:
print("execution was ok (status_code == 0)")
else:
print("execution was not ok (status_code != 0)")
status_code = bash_wrapper.code
stdout_output = bash_wrapper.stdout
stderr_output = bash_wrapper.stderr
print("full representation with command/code/stdout/stderr: %s" %
bash_wapper)
Args:
bash_cmd (string): complete bash command to execute.
"""
self.__bash_cmd = bash_cmd
self.__bash_result_object = bash.bash(bash_cmd)
def __bool__(self):
return (self.__bash_result_object.code == 0)
def __nonzero__(self):
# python2 compatibility
return self.__bool__()
@property
def code(self):
"""Return the status code of the command as int (0 => ok)."""
return self.__bash_result_object.code
@property
def stdout(self):
"""Return the stdout output of the command stripped and utf8 decoded.
Returns:
(string) stdout output (stripped and utf8 decoded).
"""
return self.__bash_result_object.stdout.strip().decode('UTF-8')
@property
def stderr(self):
"""Return the stderr output of the command stripped and utf8 decoded.
Returns:
(string) stderr output (stripped and utf8 decoded).
"""
return self.__bash_result_object.stderr.strip().decode('UTF-8')
def __repr__(self):
result = []
result.append("")
result.append("===== BASH COMMAND =======================")
result.append(self.__bash_cmd)
result.append("===== BASH RETURN CODE ===================")
result.append(str(self.code))
stdout = self.stdout
if stdout and len(stdout) > 0:
result.append("===== BASH STDOUT ========================")
result.append(self.stdout)
stderr = self.stderr
if stderr and len(stderr) > 0:
result.append("===== BASH STDERR ========================")
result.append(self.stderr)
return "\n".join(result)
class BashWrapperOrRaise(BashWrapper):
"""BashWrapper subclass which raise an exception if status_code != 0."""
def __init__(self, bash_cmd, exception_class=BashWrapperException,
exception_msg="bad return code"):
"""Constructor.
The constructor executes the given bash command and store result code
and stdout/stderr inside the object.
If the status_code is != 0, an exception is raised with all
informations (stdout/stderr/code) inside.
If the status_code is 0, you can use this object like a BashWrapper
one.
Example::
try:
x = BashWrapperOrRaise("ls /foo/bar")
except BashWrapperException as e:
print("exception with all details: %s" % e)
else:
# here, we have x.code == 0
print("stdout: %s" % x.stdout)
Args:
bash_cmd (string): complete bash command to execute.
exception_class (BashWrapperException): exception class to raise
in case of status_code !=0 (must be a subclass of
BashWrapperException).
exception_msg (string): exception message in case of
status_code != 0.
"""
super(BashWrapperOrRaise, self).__init__(bash_cmd)
if self.code != 0:
raise exception_class(exception_msg, self)
Classes
class BashWrapper (bash_cmd)
-
Bash command/output wrapper.
Constructor.
The constructor executes the given bash command and store result code and stdout/stderr inside the object.
You can use this object like this::
bash_wrapper = BashWrapper("ls /tmp") if bash_wrapper: print("execution was ok (status_code == 0)") else: print("execution was not ok (status_code != 0)") status_code = bash_wrapper.code stdout_output = bash_wrapper.stdout stderr_output = bash_wrapper.stderr print("full representation with command/code/stdout/stderr: %s" % bash_wapper)
Args
bash_cmd
:string
- complete bash command to execute.
Expand source code
class BashWrapper(object): """Bash command/output wrapper.""" __bash_cmd = None __bash_result_object = None def __init__(self, bash_cmd): """Constructor. The constructor executes the given bash command and store result code and stdout/stderr inside the object. You can use this object like this:: bash_wrapper = BashWrapper("ls /tmp") if bash_wrapper: print("execution was ok (status_code == 0)") else: print("execution was not ok (status_code != 0)") status_code = bash_wrapper.code stdout_output = bash_wrapper.stdout stderr_output = bash_wrapper.stderr print("full representation with command/code/stdout/stderr: %s" % bash_wapper) Args: bash_cmd (string): complete bash command to execute. """ self.__bash_cmd = bash_cmd self.__bash_result_object = bash.bash(bash_cmd) def __bool__(self): return (self.__bash_result_object.code == 0) def __nonzero__(self): # python2 compatibility return self.__bool__() @property def code(self): """Return the status code of the command as int (0 => ok).""" return self.__bash_result_object.code @property def stdout(self): """Return the stdout output of the command stripped and utf8 decoded. Returns: (string) stdout output (stripped and utf8 decoded). """ return self.__bash_result_object.stdout.strip().decode('UTF-8') @property def stderr(self): """Return the stderr output of the command stripped and utf8 decoded. Returns: (string) stderr output (stripped and utf8 decoded). """ return self.__bash_result_object.stderr.strip().decode('UTF-8') def __repr__(self): result = [] result.append("") result.append("===== BASH COMMAND =======================") result.append(self.__bash_cmd) result.append("===== BASH RETURN CODE ===================") result.append(str(self.code)) stdout = self.stdout if stdout and len(stdout) > 0: result.append("===== BASH STDOUT ========================") result.append(self.stdout) stderr = self.stderr if stderr and len(stderr) > 0: result.append("===== BASH STDERR ========================") result.append(self.stderr) return "\n".join(result)
Subclasses
Instance variables
var code
-
Return the status code of the command as int (0 => ok).
Expand source code
@property def code(self): """Return the status code of the command as int (0 => ok).""" return self.__bash_result_object.code
var stderr
-
Return the stderr output of the command stripped and utf8 decoded.
Returns
(string) stderr output (stripped and utf8 decoded).
Expand source code
@property def stderr(self): """Return the stderr output of the command stripped and utf8 decoded. Returns: (string) stderr output (stripped and utf8 decoded). """ return self.__bash_result_object.stderr.strip().decode('UTF-8')
var stdout
-
Return the stdout output of the command stripped and utf8 decoded.
Returns
(string) stdout output (stripped and utf8 decoded).
Expand source code
@property def stdout(self): """Return the stdout output of the command stripped and utf8 decoded. Returns: (string) stdout output (stripped and utf8 decoded). """ return self.__bash_result_object.stdout.strip().decode('UTF-8')
class BashWrapperException (message, bash_wrapper=None)
-
Specific exception class for BashWrapper objects.
Constructor.
Args
message
:string
- exception message
bash_wrapper
:BashWrapper
- bash wrapper object
Expand source code
class BashWrapperException(Exception): """Specific exception class for BashWrapper objects.""" __message = None __bash_wrapper = None def __init__(self, message, bash_wrapper=None): """Constructor. Args: message (string): exception message bash_wrapper (BashWrapper): bash wrapper object """ super(BashWrapperException, self).__init__(message) self.__message = message self.__bash_wrapper = bash_wrapper def __repr__(self): if self.__bash_wrapper is not None: return "%s exception with message: %s and debug: %s" % \ (self.__class__.__name__, self.__message, self.__bash_wrapper) else: return Exception.__repr__(self) def __str__(self): return self.__repr__()
Ancestors
- builtins.Exception
- builtins.BaseException
class BashWrapperOrRaise (bash_cmd, exception_class=mfutil.bash_wrapper.BashWrapperException, exception_msg='bad return code')
-
BashWrapper subclass which raise an exception if status_code != 0.
Constructor.
The constructor executes the given bash command and store result code and stdout/stderr inside the object.
If the status_code is != 0, an exception is raised with all informations (stdout/stderr/code) inside.
If the status_code is 0, you can use this object like a BashWrapper one.
Example::
try: x = BashWrapperOrRaise("ls /foo/bar") except BashWrapperException as e: print("exception with all details: %s" % e) else: # here, we have x.code == 0 print("stdout: %s" % x.stdout)
Args
bash_cmd
:string
- complete bash command to execute.
exception_class
:BashWrapperException
- exception class to raise in case of status_code !=0 (must be a subclass of BashWrapperException).
exception_msg
:string
- exception message in case of status_code != 0.
Expand source code
class BashWrapperOrRaise(BashWrapper): """BashWrapper subclass which raise an exception if status_code != 0.""" def __init__(self, bash_cmd, exception_class=BashWrapperException, exception_msg="bad return code"): """Constructor. The constructor executes the given bash command and store result code and stdout/stderr inside the object. If the status_code is != 0, an exception is raised with all informations (stdout/stderr/code) inside. If the status_code is 0, you can use this object like a BashWrapper one. Example:: try: x = BashWrapperOrRaise("ls /foo/bar") except BashWrapperException as e: print("exception with all details: %s" % e) else: # here, we have x.code == 0 print("stdout: %s" % x.stdout) Args: bash_cmd (string): complete bash command to execute. exception_class (BashWrapperException): exception class to raise in case of status_code !=0 (must be a subclass of BashWrapperException). exception_msg (string): exception message in case of status_code != 0. """ super(BashWrapperOrRaise, self).__init__(bash_cmd) if self.code != 0: raise exception_class(exception_msg, self)
Ancestors
Inherited members