У вас есть комбинация прямой и обратной косой черты, но я предполагаю, что вы установили ELK на windows машине:
К сожалению, у меня нет доступа к машине windows, поэтому я не было возможности проверить код. Но в основном это должно быть так:
import os
import subprocess
# desired path
target_dir = os.path.join("C:",os.sep,"elastic_stack",os.sep,"logstash-7.6.2")
# small check
if os.path.isdir(target_dir):
os.chdir(target_dir)
else:
print(" pathname does not refer to an existing directory")
# current working directory
print(os.getcwd())
# start logstash directly os.system will return the return code of the command if it's 0 means OK
os.system(".\\bin\\logstash -f C:\\Users\\Asus\\Desktop\\flask_project_part2\\project\\logstash_file.conf")
# if you need the output after you started logstash it will work ONLY in Python3
process = subprocess.run([".\\bin\\logstash", "-f", "C:\\Users\\Asus\\Desktop\\flask_project_part2\\project\\logstash_file.conf"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = process.stdout
errors = process.stderr
PS: Вы можете os.sep
при построении абсолютных или относительных путей, потому что в этом случае разделитель является системным c.
shell
для аргумента default установлено значение False
, и это означает, что системная оболочка не запущена, а если shell=True
означает, что системная оболочка будет сначала вращаться.