我寫的波紋管的Python腳本:子調用的ENV傳遞
#!/usr/bin/python
import os, subprocess
env = os.environ.copy()
env['PASSWD'] = "hello jian"
retcode = subprocess.call("smbclient -L //10.60.1.11 -U Mikejian"),env=env)
print retcode
我執行它,它工作得很好,得到RETCODE是0,你知道,我通過密碼爲環境變量,所以python不會問我這個問題。
它的確定。
現在,我想搬到這個代碼的MoinMoin的(維基引擎)代碼。其中一類命名的用戶,在這種情況下,波紋管
def _validateSMBPassword(self, username, password):
debug("call _validateSMBPassword %s:%s " % (username, password))
import subprocess, os, shlex
cmd = "sudo smbclient -L //%(server)s -U %(user)s"
cmd = cmd % {
'server' : "10.60.1.11",
'user' : "Mikejian",
}
env = os.environ.copy()
env['PASSWD'] = "hello jian"
retcode = subprocess.call("smbclient -L //10.60.1.11 -U Mikejian",env=env,shell=True)
debug("retcode:%d" % retcode)
if retcode == 0:
return True, True
return False, False
一個功能,我總是得到RETCODE是1,不爲0,它似乎是在ENV還沒有過去PASSWD環境變量。
你能告訴我爲什麼?以及任何解決方案建議?
信封傳遞的過程中,因此,如果在MoinMoin的運行你的代碼,你需要確保的MoinMoin真正得到您所期望的環境:你是怎麼開始的MoinMoin?還要注意,像你一樣傳遞密碼是一個可怕的想法,其原因很多,包括安全性。 –