如何在python结构中登录用户

时间:2014-10-29 01:13:17

标签: python shell fabric

我正在使用Python Fabric。这是我的fabfile。

 env.user='XXX'
 env.password='XXX'
 env.key_filename='/key/path'
 env.hosts=[<ip>]

    def install():
    run('ifconfig')
    run('su - hduser')
    run('ls')
    run('sudo mkdir -p /usr/lib/jvm')

当我运行上面的fabfile时,它会登录到我的节点并运行&#39; ifconfig&#39;然后我登录到用户hduser,我想在/ home / hduser中执行我以后的所有命令。但它正在root中执行命令。我怎样才能解决这个问题 ?如果它是在询问密码。如何在脚本中传递密码?

由于 Navaz

1 个答案:

答案 0 :(得分:2)

首先,每个运行命令都是与计算机的单独连接。这意味着在您运行

之后
su - hduser

下一个命令将运行,就像从未发出过一样。

要运行嵌套命令,您需要使用

with settings(user='hduser',password='Passw0rd1'):
    run('ls')

将运行&#39; ls&#39;命令作为hduser并在hduser主目录中并提供密码。

要在目录中运行命令,您还可以使用

with cd('/path/to/dir'):
    run ('command in path')

http://docs.fabfile.org/en/latest/usage/env.html