diff --git a/lib/cdist/exec/remote.py b/lib/cdist/exec/remote.py index 9610290b..c876adf1 100644 --- a/lib/cdist/exec/remote.py +++ b/lib/cdist/exec/remote.py @@ -40,6 +40,13 @@ class RemoteScriptError(cdist.Error): def __str__(self): return "Remote script execution failed: %s %s" % (self.script, self.command) +class DecodeError(cdist.Error): + def __init__(self, command): + self.command = command + + def __str__(self): + return "Cannot decode output of " + " ".join(self.command) + class Remote(object): """Execute commands remotely. @@ -121,6 +128,8 @@ class Remote(object): raise cdist.Error("Command failed: " + " ".join(command)) except OSError as error: raise cdist.Error(" ".join(*args) + ": " + error.args[1]) + except UnicodeDecodeError: + raise DecodeError(command) def run_script(self, script, env=None, return_output=False): """Run the given script with the given environment on the remote side.