Я пытаюсь найти потерянные файлы на узле в python.Ниже приведен фрагмент кода
#!/usr/bin/python
import subprocess
try:
s = subprocess.check_output(["find", "/", "-fstype", "proc", "-prune", "-o", "\( -nouser -o -nogroup \)", "-print"])
except subprocess.CalledProcessError as e:
print e.output
else:
if len(s) > 0:
print ("List of Orphan Files are \n%s\n" % s)
else:
print ("Orphan Files does not Exists on the NE")
Когда я пытаюсь запустить этот код Python
> python test.py
find: paths must precede expression: \( -nouser -o -nogroup \)
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Когда я запускаю ту же команду на CLI, она работает нормально.
> find / -fstype proc -prune -o \( -nouser -o -nogroup \) -print
/root/a
Мало кто из вас предложил использовать shell = true, согласно документации по питону для подпроцесса это угроза безопасности.Warning Using shell=True can be a security hazard.