を渡す:サブプロセス呼び出しのENV私は怒鳴るようPythonスクリプトを書く
#!/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
私はそれを実行すると、それが正常に動作し、リターンコードが0になってしまう、あなたが知っている、私は環境変数としてパスワードを渡すので、 Pythonは私にそれを求めません。
それは大丈夫です。
今、私はMoinMoinの者(Wikiエンジン)コードにこのコードを移動したいです。これはユーザーという名前のクラスで、この場合は
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
怒鳴る関数として、私はいつもリターンコードを持って1で、0ではない、ENVは、PASSWD環境変数を過ぎていないと思われました。
なぜあなたに教えてください。
MoinMoinの中で、あなたのコードを実行するので、もし、あなたがMoinMoinのは、実際にあなたが期待している環境を得ることを確認する必要がありますか?パスワードの受け渡しは、セキュリティを含む多くの理由からひどい考えです。 –