【发布时间】:2017-11-24 20:51:44
【问题描述】:
我定义了一个不时切换代理设置的函数, 问题是我希望它在没有人工干预的情况下循环运行。但是当我在 sudo 中执行程序时,它第一次被调用 en 运行顺利,第二次它要求我输入我的 sudo 密码。这是一段代码:
def ProxySetting(Proxy):
print "ProxyStetting(Proxy)"
call("networksetup -setwebproxy 'Wi-Fi' %s" "on" % Proxy, shell = True)
call("networksetup -setsecurewebproxy 'Wi-Fi' %s" "on" % Proxy, shell = True)
call("networksetup -setftpproxy 'Wi-Fi' %s" "on" %Proxy , shell=True)
我可以使用线程,但我确信有一种方法不会导致问题。如何对我的 sudo 密码进行硬编码,使其在函数开头运行?
【问题讨论】:
-
最好使用systemd创建服务,并在服务配置文件中添加权限。
-
我不知道我是否正确理解了您的问题,但您可能想看看我的回答stackoverflow.com/a/44540122/7738328,它谈到在
subprocess中使用sudo。但是,如上所述,最好完全避免使用sudo执行命令。 -
简单地说,除非我输入密码,否则这段代码不会运行。我想自动化该脚本意味着永远不必手动输入该密码。我将尝试 Mikael 解决方案,但不想为每个需要 root 命令的文件添加权限。
-
但您可能更不想要的是将您的
sudo密码以明文形式保存在 Python 脚本中。 -
可能将您的文件添加到 sudoers 会有所帮助。
标签: python subprocess call