fabric 是如何执行命令的?
how does fabric execute commands?
我想知道 fabric 是如何执行命令的。
假设我给他 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'
return : sudo: no tty present and no askpass program specified
但您可以先使用 ssh User@Host
登录,然后使用 sudo ls
登录,然后就可以了。
我不知道如何重现 no tty 错误,但我知道它可能会发生。这会阻止来自 Fabric 的 sudo 命令吗?
基本上它是如何工作的:
- 首先建立连接(相当于
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。
我想知道 fabric 是如何执行命令的。
假设我给他 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'
return : sudo: no tty present and no askpass program specified
但您可以先使用 ssh User@Host
登录,然后使用 sudo ls
登录,然后就可以了。
我不知道如何重现 no tty 错误,但我知道它可能会发生。这会阻止来自 Fabric 的 sudo 命令吗?
基本上它是如何工作的:
- 首先建立连接(相当于
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。