我想知道结构如何执行命令。
我们说我给他env.user=User
,env.host=HOST
。然后我问他sudo('ls')
这相当于我输入一个shell:ssh User@host 'sudo(/bin/ls)'
或者更多:ssh User@host
第一次,然后sudo ls
在一个借调时间内发出命令?
我问这个因为有时使用shell,如果TTY配置错误(我对此有点模糊),ssh User@Host 'sudo /bin/ls'
返回:sudo: no tty present and no askpass program specified
但您可以先使用ssh User@Host
然后sudo ls
登录,然后就可以了。
我不知道如何复制no tty错误,但我知道它可能会发生。这会阻止来自Fabric的sudo commande吗?
答案 0 :(得分:1)
基本上它是如何工作的:
ssh User@host
)通过此连接,命令执行如下:
sudo -S -p 'sudo password:' /bin/bash -l -c "your_command"
您还可以允许Fabric不要使用pty=False
参数,env.always_use_pty=False
或--no-pty
命令行选项请求pty。