首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多个参数执行python subprocess.Popen?

如何使用多个参数执行python subprocess.Popen?
EN

Stack Overflow用户
提问于 2017-10-24 03:41:48
回答 1查看 733关注 0票数 0

我需要在本地和远程服务器上执行相同的命令。因此,我使用subprocess.Popen来执行,并且本地命令按预期工作,但是当我在远程执行时,它会给我一些错误,比如命令not。我很感谢你的支持,因为我对此并不熟悉。

局部执行函数

代码语言:javascript
复制
    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

远程服务器执行

代码语言:javascript
复制
    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

我在远程执行时遇到的错误

着陆区偏移:0 SoftLayer区域偏移: /bin/sh:^# /sed 1:命令未找到/bin/sh: d:命令未找到

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 05:59:33

我想出了下面的解决方案,也许会有简单的办法而不是这样。

代码语言:javascript
复制
 def topic_offset_sl(self):
        CMD_SL1 = "ssh -q %s '/dsapps/admin/edp/scripts/edp-admin.sh kafka-topic offset %s -e %s'" % (KEY_SERVER,self.topic, self.envr)
        CMD_SL2 = "| grep -v Getting |grep -v Verifying | egrep -v '^[[:space:]]*$|^#' | awk -F\: '{print $3}'|sed '%sq;d'" % (self.partition)
        t_out_sl, t_error_sl = subprocess.Popen(CMD_SL1 + CMD_SL2 , stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate()
        return t_out_sl
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46901815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档