在Python脚本中使用sudo我正在尝试编写一个小脚本来在每次执行脚本时挂载VirtualBox共享文件夹。我想用Python做,因为我正在尝试用它来学习脚本。问题是我需要权限才能启动mount命令。我可以将脚本作为sudo运行,但我更喜欢它自己创建sudo。我已经知道将密码写入.py文件是不安全的,但我们谈的是一个根本不重要的虚拟机:我只想点击.py脚本并让它运行起来。这是我的尝试:#!/usr/bin/env pythonimport subprocesssudoPassword = 'mypass'command = 'mount -t vboxsf myfolder /home/myuser/myfolder'subprocess.Popen('sudo -S' , shell=True,stdout=subprocess.PIPE)subprocess.Popen(sudoPassword , shell=True,stdout=subprocess.PIPE)subprocess.Popen(command , shell=True,stdout=subprocess.PIPE)我的python版本是2.6
3 回答

白板的微信
TA贡献1883条经验 获得超3个赞
sudoPassword = 'mypass'command = 'mount -t vboxsf myfolder /home/myuser/myfolder'p = os.system('echo %s|sudo -S %s' % (sudoPassword, command))
试试这个,让我知道它是否有效。:-)
还有这个:
os.popen("sudo -S %s"%(command), 'w').write('mypass')

慕尼黑8549860
TA贡献1818条经验 获得超11个赞
将密码传递给sudo
stdin:
#!/usr/bin/env pythonfrom subprocess import Popen, PIPE sudo_password = 'mypass'command = 'mount -t vboxsf myfolder /home/myuser/myfolder'.split()p = Popen(['sudo', '-S'] + command, stdin=PIPE, stderr=PIPE, universal_newlines=True)sudo_prompt = p.communicate(sudo_password + '\n')[1]
注意:您可以配置无密码sudo或SUDO_ASKPASS
命令,而不是在源代码中硬编码密码。
添加回答
举报
0/150
提交
取消