Команды Python OS не работают из-за выполнения нового приложения - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно проверить отставание процессов GoldenGate.Для этого я выполняю Goldengate, а не пытаюсь запустить собственные команды GoldenGate «info all».

import subprocess as sub
import re
import os

location = str(sub.check_output(['ps -ef | grep mgr'], shell = True)).split()
pattern = re.compile(r'mgr\.prm$')
print(type(location))
for index in location:
        if pattern.search(index)!=None:
                gg_location = index[:-14] + "ggsci"

exec_ggate = sub.call(str(gg_location))
os.system('info all')

Тем не менее, когда я выполняю GoldenGate, он открывает собственную оболочку нового GoldenGate.Поэтому я думаю, что из-за этого Python не может выполнить команду «info all».Как я могу решить эту проблему?Если отсутствует информация, пожалуйста, сообщите мне.

Заранее спасибо,

1 Ответ

0 голосов
/ 29 ноября 2018

Для автоматизации команд в Golden Gate у вас есть следующая информация в документации Oracle: https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_gettingstarted.htm#GWUAD1096

Для ввода сценария Используйте следующий синтаксис из командной строки операционной системы.

ggsci < input_file

Где: Символ угловой скобки (<) передает файл в программу GGSCI.input_file - это текстовый файл, известный как файл OBEY, содержащий команды, которые вы хотите выполнить, в том порядке, в котором они должны быть выполнены. </em>

Принимая ваш сценарий (имейте в виду, я нене знаю, как кодировать в python) вы можете просто выполнить команду оболочки в python следующим образом:

import os
os.system("command")

Итак, попробуйте сделать это:

import os
os.system("ggsci < input_file")

Изменение файла ввода, как указанодокументы.Я думаю, вам будет легче делать это таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...