为了账号安全,请及时绑定邮箱和手机立即绑定

在Python脚本中使用sudo

在Python脚本中使用sudo

慕莱坞森 2019-09-13 15:10:26
在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')


查看完整回答
反对 回复 2019-09-16
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

将密码传递给sudostdin:

#!/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命令,而不是在源代码中硬编码密码。



查看完整回答
反对 回复 2019-09-16
  • 3 回答
  • 0 关注
  • 833 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信