mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
host: Remove sudo prompt from stderr in execute()
Remove the leading space introduced on stderr by: sudo -S -p ' ' background() still gets the space, since we cannot easily apply processing to its stderr. Note: -p '' does not work on recent sudo, so we unfortunately cannot just completely remove it for the time being.
This commit is contained in:
parent
a948982700
commit
5b37dfc50b
@ -97,7 +97,8 @@ class LocalConnection(ConnectionBase):
|
|||||||
def execute(self, command, timeout=None, check_exit_code=True,
|
def execute(self, command, timeout=None, check_exit_code=True,
|
||||||
as_root=False, strip_colors=True, will_succeed=False):
|
as_root=False, strip_colors=True, will_succeed=False):
|
||||||
self.logger.debug(command)
|
self.logger.debug(command)
|
||||||
if as_root and not self.connected_as_root:
|
use_sudo = as_root and not self.connected_as_root
|
||||||
|
if use_sudo:
|
||||||
if self.unrooted:
|
if self.unrooted:
|
||||||
raise TargetStableError('unrooted')
|
raise TargetStableError('unrooted')
|
||||||
password = self._get_password()
|
password = self._get_password()
|
||||||
@ -112,6 +113,11 @@ class LocalConnection(ConnectionBase):
|
|||||||
raise TargetTransientError(message)
|
raise TargetTransientError(message)
|
||||||
else:
|
else:
|
||||||
raise TargetStableError(message)
|
raise TargetStableError(message)
|
||||||
|
|
||||||
|
# Remove the one-character prompt of sudo -S -p
|
||||||
|
if use_sudo and stderr:
|
||||||
|
stderr = stderr[1:]
|
||||||
|
|
||||||
return stdout + stderr
|
return stdout + stderr
|
||||||
|
|
||||||
def background(self, command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, as_root=False):
|
def background(self, command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, as_root=False):
|
||||||
@ -119,6 +125,8 @@ class LocalConnection(ConnectionBase):
|
|||||||
if self.unrooted:
|
if self.unrooted:
|
||||||
raise TargetStableError('unrooted')
|
raise TargetStableError('unrooted')
|
||||||
password = self._get_password()
|
password = self._get_password()
|
||||||
|
# The sudo prompt will add a space on stderr, but we cannot filter
|
||||||
|
# it out here
|
||||||
command = "echo {} | sudo -p ' ' -S ".format(quote(password)) + command
|
command = "echo {} | sudo -p ' ' -S ".format(quote(password)) + command
|
||||||
|
|
||||||
# Make sure to get a new PGID so PopenBackgroundCommand() can kill
|
# Make sure to get a new PGID so PopenBackgroundCommand() can kill
|
||||||
|
Loading…
x
Reference in New Issue
Block a user