如何让python运行sudo openvpn --cd / etc / openvpn --config client.ovpn
我正在尝试以下内容但没有成功
vpnfile2 = '/etc/init.d/openvpn'
cfgFile = 'client.ovpn'
os.system('sudo \"" + vpnFile2 + "\" --cd \"" + vpnpath + "\" --config \"" + cfgFile + "\"')
答案 0 :(得分:8)
使用subprocess
模块
import subprocess
subprocess.call(['sudo', vpnFile2, '--cd', vpnpath, '--config', cfgFile])
答案 1 :(得分:1)
这个问题已经发布了一段时间,但如果有人遇到这个问题(像我一样),还有另一种方法可以使用os.system方法获取权限。
只有在GUI环境中运行时才能使用它。 您可以简单地尝试使用'gksu'或('kdesu'或'kdesudo')调用它,它在gnome会话中看起来像这样:
import os
vpnfile2 = '/etc/init.d/openvpn'
cfgFile = 'client.ovpn'
os.system('gksu \"" + vpnFile2 + "\" --cd \"" + vpnpath + "\" --config \"" + cfgFile + "\"')
提示有效,但我没有测试它以使用您的代码。
答案 2 :(得分:0)
如果你有什么理由要使用os.system,而不是subprocess,我通常会通过bash来清洗它,所以
os.system('''sudo bash -c "command to run"''')
(或者sh或者你拥有的任何外壳)。在许多情况下,它会更好地处理参数。