【问题标题】:How fabric work with 'sudo su user'织物如何与“sudo su 用户”一起使用
【发布时间】:2017-10-04 17:26:42
【问题描述】:

我的要求很简单:

  1. 使用 user0 SSH 到远程服务器
  2. 使用以下命令将用户切换到 user1:'sudo su user1'
  3. 列出当前文件夹中的所有项目

我的预期代码:

def startRedis():
    run('sudo su - user1')
    print(run('ls'))

但是,它以 out 结尾:user1@server:~$ 并永远等待我的交互式命令,从不执行第二行。似乎sudo su 打开了一个新的shell。

谁能帮忙解决这个简单的任务?

【问题讨论】:

    标签: python sudo fabric


    【解决方案1】:

    您可以在环境中设置sudo_user 属性。这样,fabric 会将用户切换到所需的用户。

    官方文档:http://docs.fabfile.org/

    可以在环境中指定切换用户的密码。避免在调用方法时得到提示。

    fabfile.py

    from fabric.api import env, sudo
    
    env.sudo_user='user1'
    env.password = '***'
    
    def list_items():
        sudo('ls')
    

    运行下面的命令并在-H之后指定主机

    fab -H host1 list_items
    

    【讨论】:

    • 如果密钥被授权给任何用户in sudoers,它也可以使用env.user,并且即使设置了env.sudo_user,它也会失败,如果ssh密钥适用于不在 sudoers 组中的用户。所以答案可能有效,但不是 100% 正确。
    • 是的,将查找 sudoers 组以检查用户是否具有所需的权限。在这种情况下,程序不会一直等待,而是会退出并显示相应的错误消息。
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多