Fabric:用一个用户连接到机器,然后用另一个用户做东西

时间:2012-08-07 08:34:32

标签: python fabric

我目前正在尝试使用Fabric执行以下操作:

  1. 在主机
  2. 上以“user1”用户身份启动命令“whoami”
  3. 在主机
  4. 上以“user2”用户身份启动命令“whoami”

    相应的Bach命令是:

    $ ssh user1@host
      [...enter password...]
    $ whoami
    $ su - user2
      [...enter password...]
    $ whoami
    

    请注意,唯一允许连接主机的用户是“user1”。我无法使用user2连接到我的主机。

    我尝试了这个Fabric代码:

    def mytask():
        with settings(user='user1', password='p1'):
            run('whoami')
            with settings(user='user2', password='p2'):
                run('whoami')
    

    但它一直在问我user2的密码。

2 个答案:

答案 0 :(得分:3)

Fabric可以sudo发送给用户,而不是root:

def mytask():
with settings(user='user1', password='p1'):
    run('whoami')
    sudo('whoami', user="user2")

答案 1 :(得分:0)

def mytask():
    with settings(user='user1', password='p1'):
        run('whoami')
        run('sudo -u user2 -S p2 whoami')