python subprocess run shell with gawk regular expression don't work -
the bash cmd :
 ps aux |grep tomcat  |grep -ev grep |grep -o 'dcatalina.base=.*tomcat' |gawk -f'[ =]+' '{print $2}'" this works on bash , output is:
/opt/backuplog/tomcat-6.0.44 however, want use cmd in python,so use subprocess
out=subprocess.popen(cmd,shell=true,stdout=subprocess.pipe,stderr=subprocess.stdout) output,outerr = out.communicate() but output '', want know how deal it
use bash run it, command should be:  
cmd = '''bash -i -c "ps aux |grep tomcat  |grep -ev grep |grep -o 'dcatalina.base=.*tomcat' |gawk -f'[ =]+' '{print $2}'"''' or can use subprocess.check_output:  
cmd = "ps aux |grep tomcat  |grep -ev grep |grep -o 'dcatalina.base=.*tomcat' |gawk -f'[ =]+' '{print $2}'"  subprocess.check_output(['bash', '-i', '-c', cmd]) 
Comments
Post a Comment