我有一个自动必须触发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);
但也没有成功。那么如何在此调用中传递密码,以便我不必手动验证?
注意:我知道将用户密码放在文件中是不安全的,并且不知所措。在下一步中,我的密码将从数据库中提供,并且不会以任何一种方式获取!