在python中使用os.popen转换linux命令

时间:2013-11-20 14:55:16

标签: python linux popen

我如何制作这个命令:

ACTIVE_MGMT_1=`ssh -n ${MGMT_IP_1}  ". .bash_profile; xms sho proc TRAF.*" 2>/dev/null |egrep " A " |awk '/TRAF/{print $1}' |cut -d "." -f2`;

通过python运行?

我试图这样做:

active_mgmgt_1 = os.popen("""ssh -n MGMT_IP_1  ". .bash_profile; xms sho proc TRAF.*" 2>/dev/null |egrep " A " |awk '/TRAF/{print $1}' |cut -d "." -f2""")
SITE_NAME = site_name.read().replace('\n', '') 

但它不起作用。

1 个答案:

答案 0 :(得分:3)

subprocess.check_outputshell=True

一起使用
cmd = r'''ssh -n ${MGMT_IP_1} ". .bash_profile; xms sho proc TRAF.*" 2>/dev/null |egrep " A " |awk '/TRAF/{print $1}' |cut -d "." -f2'''
output = subprocess.check_output(cmd, shell=True)

<强>更新

在Python 2.7中添加了

subprocess.check_output。如果您使用旧版本的Python,请改用subprocess.Popen.communicate

proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output, errmsg = proc.communicate()