我正在使用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
答案 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')