我有一个像
这样的命令 def subprocess_cmd(command):
fnlogs("comand = " + command)
process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
proc_stdout = process.communicate()[0].strip()
fnlogs("proc_stdout = " +proc_stdout + "\n")
subprocess_cmd('su - user; cd $CONFIG; grep domain domains.xml')
需要一个接一个地执行命令并捕获grep的输出。
CTE
输出说grep:domains.xml:没有这样的文件或目录,虽然该文件存在但无法找到它。
答案 0 :(得分:0)
您似乎没有传递CONFIG
的值。
如果您知道脚本中的预期值,则可以执行
d = dict(os.environ)
d["CONFIG"] = "/some/directory"
process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True, env=d)
您可能还必须使用sudo
致电-E
以保留您传递到第一个最外层shell
的环境(请参阅https://stackoverflow.com/a/8633575/693140)。
更一般地说,如果不依赖外部命令,您的子命令似乎不会执行在Python中无法实现的任何操作。我建议完全重新考虑你的方法,只需打开文件并从字符串中提取相应的文本(例如使用正则表达式)。