£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyʦ•ꎅȮFÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~芩ÊǍí`ÔÑ©ú뙵'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶êםӼ㞪éUWŸÈË%DÒÕ¬ï‘]/Åcx ‰ï2ß]ä6G[]S£Ôϯrs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ ¯¹ægƒÛowЍø^d™ý½ßB7áyMä9ÜÖUã !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT import subprocess def exec_utility(util_path, params, stderr=False): """ Executes supplied utility with supplied parameters :param util_path: string with path to callable utility :param params: utility parameters :param stderr: trigger to return stderr or not :return: Cortege (ret_code, cagefsctl_stdout) if stderr is False Cortege (ret_code, cagefsctl_stdout, cagefsctl_stderr) otherwise """ args = [] args.append(util_path) args.extend(params) with subprocess.Popen( args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) as proc: out, err = proc.communicate() retcode = proc.returncode if stderr: return retcode, out.strip(), err.strip() return retcode, out.strip()