我定义了一个函数来时不时地切换我的代理设置,问题是我想让它在没有人工干预的情况下循环运行。但是当我在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密码进行硬编码,使其在函数开始时运行?
发布于 2017-06-22 04:31:35
在这里,您可以执行命令sudo,而不会出现交互式提示,要求您键入密码:
from subprocess import call
pwd='my password'
cmd='ls'
call('echo {} | sudo -S {}'.format(pwd, cmd), shell=True)发布于 2018-11-10 04:01:54
通过python将密码传递给shell命令的另一种方法是:
p = subprocess.Popen(['sudo', self.resubscribe_script], stdin=subprocess.PIPE)
p.communicate('{}\n'.format(self.sudo_password))请注意,使用communicate将只允许向标准输入提供一个输入;还有其他方法可以获得可重用的输入。
https://stackoverflow.com/questions/44684764
复制相似问题