猿问

在Python脚本中使用sudo

在Python脚本中使用sudo

我正在尝试编写一个小脚本来在每次执行脚本时挂载VirtualBox共享文件夹。我想用Python做,因为我正在尝试用它来学习脚本。


问题是我需要权限才能启动mount命令。我可以将脚本作为sudo运行,但我更喜欢它自己创建sudo。


我已经知道将密码写入.py文件是不安全的,但我们谈的是一个根本不重要的虚拟机:我只想点击.py脚本并让它运行起来。


这是我的尝试:


#!/usr/bin/env python

import subprocess


sudoPassword = '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


心有法竹
浏览 3937回答 3
3回答

慕桂英3389331

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')

HUWWW

将密码传递给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命令,而不是在源代码中硬编码密码。
随时随地看视频慕课网APP

相关分类

Python
我要回答