File: //opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/utils.cpython-37.pyc
B
���^�6 � @ s� d dl mZ d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlmZ d dl
mZmZmZmZ d dlmZ d dlmZ d d lmZmZmZ d d
lmZ ddlmZ dd
lmZ dZ dGdd�Z!dHdd�Z"dd� Z#dd� Z$dd� Z%dd� Z&dd� Z'dd� Z(dd � Z)d!d"� Z*dId$d%�Z+dJd&d'�Z,dKd)d*�Z-dLd+d,�Z.d-d.� Z/d/d0� Z0d1d2� Z1d3d4� Z2d5d6� Z3d7d8� Z4d9d:� Z5dMd=d>�Z6d?d@� Z7dAdB� Z8dCdD� Z9dNdEdF�Z:dS )O� )�print_function)�absolute_import)�divisionN)�time)�AnyStr�List�Dict�Optional)�resolve_username_and_doc_root)�CP_NAME)�NoDomain�NotSupported�
IncorrectData)�mod_makedirs� )�clprint)�ClSelectExceptz/sbin/cagefs_enter_userc
C s� y0t j| td�t jt jd|dd�}|�� \}}W n: ttfk
rj } zt� | d t
|���W dd}~X Y nX |jdkr�t�|p�dd�
| �|f ��|S )z�
Runs external process and returns output
:param cmd: command and arguments as a list
:param env_data
:return string
z /dev/nullT)�stdin�stdout�stderr� close_fds�env�textr Nzoutput of the command: %s
%s� )�
subprocess�Popen�open�PIPEZSTDOUT�communicate�OSError�IOErrorr �FileProcessError�str�
returncode�ExternalProgramFailed�join)�cmd�env_data�output�std_out�std_err�e� r, �?/opt/alt/python37/lib/python3.7/site-packages/clselect/utils.py�run_command# s &
r. c
C sz y2t j| td�t jt j|d||d�}|�� \}}W n: ttfk
rl } zt�| d t |���W dd}~X Y nX |j
||fS )a�
Runs external process and returns output.
Differs from subprocess.check_output, run_command above, and check_output below in that it does not
throw an exception if process's return code != 0
:param cmd: command and arguments as a list
:param env_data
:param preexec_fn: Pre-exec function. None if don't need
:param cwd: Directory name to set as current
:return Cortege: (ret_code, stdout, stderr)
z /dev/nullT)r r r �
preexec_fnr �cwdr r N)r r r r r r r r r! r"