我有以下fabfile:
from fabric.api import *
env.hosts = ['samplehost']
env.user = 'foo'
env.password = 'bar'
env.shell = ''
def exec_ls():
run('ls')
run('ls -l')
我得到以下输出:
^{pr2}$用户“foo”的登录shell为“/bin/rbash”。在
似乎如果我执行一个带参数的命令,它将被视为一个单独的命令(而不带参数的'ls'工作得很好)。在
请注意,我放置了一个空的shell,否则Fabric会尝试使用'/bin/bash',这是受限shell不允许的。在
有没有可能在限制的外壳中使用织物?在
这个问题与使用
rbash
无关,而是与env.shell
的空值有关。要解决该问题,请使用:请注意:
env.shell
的默认值是/bin/bash -l -c
,因此使用/bin/rbash -l -c
是有意义的env.shell
设置为空字符串时,命令不会通过任何shell执行在我的环境中,使用受限shell作为纯数组的一部分,似乎可以将参数shell=False传递给run函数。在
-检查目标机器的环境
假设你得到了这个:
^{pr2}$-然后在你的Python里工厂文件.py公司名称:
相关问题 更多 >
编程相关推荐