2012-02-07 5 views
2

制限付きシェルでコマンドを実行します/ bin/rbash 'と入力します。使用生地は、私は、次のfabfileをした

パラメータを指定してコマンドを実行すると、パラメータなしの 'ls'が完全に機能するのに対し、コマンドは単一のコマンドとして扱われるようです。

Fabricが '/ bin/bash'を使用しようとしていて、制限付きシェルで許可されていないため、空のシェルを置いたことに注意してください。

制限付きシェルでFabricを使用できますか?

答えて

2

この問題は、rbashが使用されていることに関連しているのではなく、空の値env.shellに関連しています。

env.shell = '/bin/rbash -l -c' 

なお:

  • env.shellのデフォルト値はそう/bin/rbash -l -cを使用して、/bin/bash -l -cであるが、センス
  • env.shellが空の文字列に設定されている
  • 、コマンドのISNを行い、その問題の使用を修正するにはどのシェルでも実行されません
  • シェルは、長い文字列をコマンドと引数に分割するシェルです。シェルなしでは、すべての文字列は単一のcomとして解釈されますMANDそれは.Hypotheticallyあなたがこれを取得

    echo $SHELL 
    

    とターゲット・マシンの

+0

「rbash -l -c」を指定すると、問題が解決しました。制限されたシェルが絶対パスを使用できないので、 ''/bin/rbash ''を置くことはできません。 – alexyz78

1

-CHECK環境が起こったとして求めることするつもりはない。

/bin/sh 

- その後、あなたのpython fabfile.py:

from fabric.api import env 

env.shell = "/bin/sh -c" 
2

私の環境では、 Pure配列の一部として制限されたシェルを呼び出すと、引数shell = Falseを実行関数に渡すオプションがあるように見えます。

関連する問題