我正在运行一个fabfile,其中包含以下内容:
def stop_service(service_name):
execute_sudo_command(c,"service %s stop" % service_name)
@task
def execute_sudo_command(c,command):
c.sudo(command)
我运行fabfile,如“ fab --- sudo-password任务提示”。
运行此命令时,系统会提示我输入sudo密码,然后输入该密码。问题是,当它实际运行时,我总是得到:
[sudo]密码:对不起,请重试。
如果我直接进入该服务器并输入sudo su,则输入相同的密码即可。
我还修改了任务以尝试以下操作:
@task
def execute_sudo_command(c,command):
c.run('sudo ' + command)
我以相同的方式运行fabfile,并输入相同的sudo密码。
我得到:
sudo:不存在tty且未指定AskPass程序
如果我执行像ls这样的非sudo命令,它会正常工作:
@task
def execute_sudo_command(c,command):
c.run('ls -l')
total 4
drwxr-xr-x 2 buser users 4096 Mar 13 2017 bin/
我不确定这是否相关,但这是我进行连接的方式:
for host in ('buser@10.x.x.xx:22','buser@10.x.x.xx:22'):
c = Connection(host, connect_kwargs={'key_filename': 'C:/Users/buser/openssh'})