fabric - 用户切换后无法运行命令

时间:2015-10-07 17:30:33

标签: linux python-2.7 fabric switch-user

我最近被介绍到结构并尝试接近以下内容:

  1. 访问远程主机
  2. su root
  3. 执行命令,例如更改多个用户的密码
  4. 完成! 请注意,我不能使用sudo,也不能使用root直接连接到远程主机。只有在我明确地将用户更改为root时,才能执行我需要执行的命令。
  5. 我能够接近到达远程主机的主要概念并使用结构播放一些命令,但我遇到的问题是,一旦我切换到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环境中开发。

1 个答案:

答案 0 :(得分:1)

你必须使用fexpect和fexpect run命令

from ilogue import fexpect

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

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