Ich muss den gleichen Befehl auf einem lokalen und Remote-Server ausführen. Also verwende ich subprocess.Popen, um auszuführen, und der lokale Befehl funktioniert wie erwartet, aber wenn ich auf der Fernbedienung ausführe, gibt es mir einen Fehler wie Befehl nicht gefunden. Ich schätze Ihre Unterstützung, da ich neu bin.Wie führe ich python subprocess.Popen mit vielen Argumenten aus?
Lokale Ausführungsfunktion
def topic_Offset_lz(self):
CMD = "/dsapps/admin/edp/scripts/edp-admin.sh kafka-topic offset %s -e %s | grep -v Getting |grep -v Verifying | egrep -v '^[[:space:]]*$|^#' | awk -F\: '{print $3}'|sed '%sq;d'" % (self.topic,self.envr,self.partition)
t_out_lz, t_error_lz = subprocess.Popen(CMD, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate()
return t_out_lz
Remote-Server Ausführung
def topic_offset_sl(self):
CMD = "/dsapps/admin/edp/scripts/edp-admin.sh kafka-topic offset %s -e %s | grep -v Getting |grep -v Verifying | egrep -v '^[[:space:]]*$|^#' | awk -F\: '{print $3}'|sed '%sq;d'" % (self.topic, self.envr, self.partition)
t_out_sl, t_error_sl = subprocess.Popen(["ssh", "-q", CMD], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate()
return t_error_sl
Fehler Ich
für die Remote-Ausführung bekommenLanding Zone Offset: 0
SoftLayer Zone Offset: /bin/sh: ^# |sed 1: command not found /bin/sh: d: command not found
'CMD = "ssh -q" + CMD' und dann:' subprocess.Popen (CMD.split(), stdout = ... ' – alfasin
Jetzt ist es mir SSH Nutzung Menü angezeigt wird, scheint, wie es nicht pars die Variable, wie ich wollte, einen Fehler – Biginor