DEV Community

Muthu
Muthu

Posted on

Python Linux Command executor

# IMPORTING LIBRARIES 
import subprocess
import shlex

def cmdExecutor(cliCmd):
    # COLLECT THE COMMAND AND SPLIT USING SHLEX
    cmd = shlex.split(cliCmd)
    # EXECUTE THE SUBPROCESS WITH COMMUNICATE()
    process,error = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr= subprocess.PIPE).communicate()
    print("Command executed successfully")
    # DECODE THE RESPONSE FROM THE SUBPROCESS TO UTF-8
    error = error.decode("utf-8")
    if(str(error)==None or str(error)==""):
        output="SUCCESS"
    else:
        output = "ERROR => "+str(error)
    return output

Top comments (2)

Collapse
 
rhymes profile image
rhymes

Hi muTheTechie, I think you can simplify the error checking like this:

def cmdExecutor(cliCmd):
    cmd = shlex.split(cliCmd)
    process, error = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
    print("Command executed successfully")
    if error:
      return f"ERROR => {error.decode('utf-8')}"
    else:
      return "SUCCESS"

you don't need to convert the error to a string

Collapse
 
mu profile image
Muthu

thanks @rhymes