2017-08-18 103 views
0

我有一個像蟒蛇執行多個命令子

command = "su - user; cd $CONFIG; grep domain domains.xml" 

命令,需要執行命令另一個後捕捉的grep的輸出。

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說:domains.xml:沒有這樣的文件或目錄,但該文件存在,它不是能夠找到它。

+1

您應該驗證'pwd'的輸出以查看您的子進程在同一個目錄中。 – silgon

+0

我正在做一個cd $ CONFIG這是有domains.xml – Sameer

回答

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中實現的任何東西。我建議重新考慮你的方法,只需打開文件並從字符串中提取相應的文本(例如使用正則表達式)。

+0

你建議什麼方法?該命令將被存儲在一個文件中,然後執行? – Sameer

+0

謝謝@Stefan我設法得到解決方法是將輸出寫入文件並將結果拆分。 – Sameer