在python中使用os.system运行带参数的程序

2024-06-03 11:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如何让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 + "\"')

Tags: clientconfiginitosetcsudocd事情
3条回答

这个问题已经发布了一段时间了,但是如果有人遇到这个问题(像我一样),有另一种方法可以使用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 + "\"')

这个提示有效,但我还没有测试它是否能与您的代码一起工作。

使用subprocess模块

import subprocess
subprocess.call(['sudo', vpnFile2, '--cd', vpnpath, '--config', cfgFile])

如果您想使用os.system而不是子流程有什么原因,我通常会通过bash来清洗它,所以 os.system('''sudo bash -c "command to run"''')(或sh或任何外壳)。在许多情况下,它能更好地处理论点。

相关问题 更多 >