in src/common/utils.py [0:0]
def run_command(command, env=None, raise_on_error=True, execute_as_user=None, log_error=True, timeout=60, shell=False):
"""
Execute shell command.
Usage of this function will result in a B604 bandit violation. When building the command string argument, if using
an external argument, please validate it using validate_subprocess_argument and/or validate_absolute_path functions
based on the argument type.
:param command: command to execute
:param env: a dictionary containing environment variables
:param raise_on_error: True to raise subprocess.CalledProcessError on errors
:param log_error: control whether to log or not an error
:raise: subprocess.CalledProcessError if the command fails
"""
if isinstance(command, str) and not shell:
command = shlex.split(command)
# A nosec B602 comment is appended to the following line in order to disable the B602 check.
# This check is disabled for the following reasons:
# - Some callers (e.g., common slurm commands) require the use of `shell=True`.
# - All values passed as the command arg are constructed from known inputs and are properly validated.
_run_command(
lambda _command, _env, _preexec_fn: subprocess.run(
_command,
env=_env,
preexec_fn=_preexec_fn,
timeout=timeout,
check=True,
encoding="utf-8",
shell=shell, # nosec B602
),
command,
env,
raise_on_error,
execute_as_user,
log_error,
)