2016-04-25 110 views
-1

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

比方说,我给他env.user=User,env.host=HOST。然后我问他sudo('ls') 这是相当于我打字在一个外壳:ssh [email protected] 'sudo(/bin/ls)' 或更多:ssh [email protected]第一次,然后sudo ls commande在第二次时间?

我问是因为有时使用的外壳,如果TTY有一个错误的配置(我对这个有点模糊),ssh [email protected] 'sudo /bin/ls' 回报:sudo: no tty present and no askpass program specified 但你可以先登录与ssh [email protected]然后sudo ls它作品。

我不知道如何复制no tty错误,但我知道它可能发生。这会阻止Fabric的sudo commande吗?

回答

1

基本上它的工作原理是:

  • 首先建立连接(等同做ssh [email protected]
  • 在此连接的命令,作为执行如下:

    sudo -S -p 'sudo password:' /bin/bash -l -c "your_command" 
    

    你可以也允许Fabric不要求使用pty=False参数,env.always_use_pty=False--no-pty命令行选项的请求。