The source code is simple to understand.
The execute_proceess_with_communicate let run the ls command with the sudo user permissions:
import os
import sys
import string
import subprocess
import codecs
inp = ''
cmd = 'ls'
password = ''
def execute_proceess_with_communicate(inp):
"""Return a list of hops from traceroute command."""
p = subprocess.Popen(
['sudo', cmd, inp],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=False)
text, _ = p.communicate(password)
#print(type(text))
outp = codecs.decode(text,'utf8')
out_split=outp.split('\n')
return out_split
def normalize_out(list_outp):
"""Extract information from traceroute line per line."""
normalized_out = []
for op in list_outp:
# filer out if an empty line
if len(op) is 0:
continue
op_split = op.split()
normalized_out.append(op_split)
return normalized_out
if __name__ == '__main__':
inp = sys.argv[1]
out = execute_proceess_with_communicate(inp)
n_out = normalize_out(out)
print(n_out)
The result is this:[mythcat@desk scripts]$ python3 subprocess_001.py '/'
[['bin'], ['boot'], ['dev'], ['etc'], ['home'], ['lib'], ['lib64'], ['media'], ['mnt'], ['opt'], ['proc'],
['root'], ['run'], ['sbin'], ['srv'], ['sys'], ['tmp'], ['usr'], ['var']]