forked from TrueCloudLab/frostfs-testlib
29 lines
924 B
Python
29 lines
924 B
Python
from frostfs_testlib.shell.interfaces import CommandInspector
|
|
|
|
|
|
class SudoInspector(CommandInspector):
|
|
"""Prepends command with sudo.
|
|
|
|
If command is already prepended with sudo, then has no effect.
|
|
"""
|
|
|
|
def inspect(self, original_command: str, command: str) -> str:
|
|
if not command.startswith("sudo"):
|
|
return f"sudo {command}"
|
|
return command
|
|
|
|
|
|
class SuInspector(CommandInspector):
|
|
"""Allows to run command as another user via sudo su call
|
|
|
|
If command is already prepended with sudo su, then has no effect.
|
|
"""
|
|
|
|
def __init__(self, user: str) -> None:
|
|
self.user = user
|
|
|
|
def inspect(self, original_command: str, command: str) -> str:
|
|
if not original_command.startswith("sudo su"):
|
|
cmd = original_command.replace('"', '\\"').replace("\$", "\\\\\\$")
|
|
return f'sudo su - {self.user} -c "{cmd}"'
|
|
return original_command
|