使用subprocess用sudo执行shell脚本

时间:2015-08-21 10:07:21

标签: python shell subprocess popen

我有一个自动必须触发shell脚本的Python脚本。 一切正常,但有一个问题。当我执行脚本(从Web界面)时,运行该进程的终端将询问用户的密码。不应该询问此问题,并且应该自动与 os.system("chmod +x " + pathInstallScript) os.chdir(installerLocation) #The problem happens here. subprocess.call(['sudo','./'+ self.file_to_execute]) 权利相关联。

sudo

subprocess.call工作正常。它将找到路径并开始,然后 cmd = ['sudo', './'+ self.file_to_execute] proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc.stdin.write('MyPassword\n') proc.stdin.flush() 启动.sudo调用将在用户继续之前询问用户密码。当我在终端中手动输入密码时,一切都会正常工作,但我必须绕过它。 我尝试了什么:

proc = subprocess.Popen(
['sudo','./'+ self.odoo_username],
        stdin=subprocess.PIPE)
proc.stdin.write('odoo\n')
proc.stdin.close()
proc.wait()

但这似乎没有通过密码。我的第二次尝试:

HttpServletRequest X = (HttpServletRequest) context.getParameter(ODataContext.HTTP_SERVLET_REQUEST_OBJECT);

但也没有成功。那么如何在此调用中传递密码,以便我不必手动验证?

注意:我知道将用户密码放在文件中是不安全的,并且不知所措。在下一步中,我的密码将从数据库中提供,并且不会以任何一种方式获取!

0 个答案:

没有答案