0
- 我有一個名爲grep_phalanx_log的方法,其功能是SSH連接到一臺機器,grep連接一些值。
- 我的主要方法將使用不同的主機名/憑證,日誌文件名,grep模式來調用此方法。
- 因此,我需要在PARALLEL中的兩個不同服務器上grep一個SAME模式。如果在一臺服務器中找到匹配項,我希望其他服務器停止擦除。如果在這兩個服務器中找不到特定時間的模式,我的方法grep_phalanx_log將返回一個負值。基於負面價值,我必須繼續其他一些要求。
class eventFlowTestNfx(object)
def grep_phalanx_log(self, host_name, username, password, grep_cmd, timeout=10, time_to_monitor=20):
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
Log.info("Grep command to be executed: %r" % grep_cmd)
try:
ssh_client.connect(host_name, username=username, password=password, timeout=timeout)
end_time = time.time() + time_to_monitor
while time.time() < end_time:
ssh_stdin, ssh_stdout, ssh_stderr = ssh_client.exec_command(grep_cmd)
output = ssh_stdout.read()
if not output:
time.sleep(1)
else:
Log.info("NFX: Match message from %r is %r" % (host_name, output))
return output
if not output:
Log.error("FAILED: Message not processed.")
Log.error("Host Name: %r and grep command: %r" % (host_name, grep_cmd))
raise Exception("NFX agent could not process message")
except:
Log.error("End to End flow is broken, check the logs!")
return -1
def main(self):
for cr_dict in correlation_list:
cr_process = multiprocessing.Process(target=self.grep_phalanx_log(), args=(cr_dict["host"], cr_dict["username"], cr_dict["password"], cr_received_cmd_skeleton,))
cr_process.start()
所以,我有我的代碼凝視着2個過程,我不知道他們會如何相互交談和終止等。Python多處理 - 在子進程之間傳遞值
您的代碼有多個與您的問題無關的錯誤。 – jfs