fabric -- 切换用户后不能 运行 命令

fabric -- cant run commands after user is switched

我最近接触了 fabric 并试图处理以下问题:

  1. 访问远程主机
  2. su root
  3. 执行命令,例如更改多个用户的密码
  4. 完成! 请注意,我不能使用 sudo,也不能使用 root 直接连接到远程主机。我需要执行的命令只有在我明确将用户更改为 root 后才能执行。

我能够接近使用 fabric 访问远程主机并使用一些命令的主要概念,但我遇到的问题是一旦我切换到 root "su root" 我无法执行其余的除非我退出。

我尝试处理的示例:

def mytask():
    with settings(user="root"):
        run('whoami')
        run('echo "TEST using root user"')
        run('echo "ITS WORKING!!!"')

或类似这样的东西

def mytask():
    run ('su root')
    run ('passwd testUser')

在这两种情况下,一旦我输入 root 密码,就不会执行任何操作,我会恢复远程命令行,除非我退出回到原始用户。我几乎没有看到关于使用 "fexpect" 作为提示的建议,但不确定这是否会产生影响。

我正在 Linux 环境中开发。

你必须使用 fexpect 和 fexpect 运行 命令

from ilogue import fexpect

prompt = ['Password', 'mypassword']  # ('prompt', 'answer') Case sensitive

def test():
    with fexpect.expecting(prompt):
        fexpect.local("su -")