Fabric如何执行命令?

时间:2016-04-25 15:09:22

标签: ssh fabric tty

我想知道结构如何执行命令。

我们说我给他env.user=Userenv.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吗?

1 个答案:

答案 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。