2017-01-18 26 views
0

迷惑メールsshで複数のコマンドを実行する際に問題が発生しています。放浪の環境でいくつかのテストを実行するために複数の引数を持つVagrant ssh

私は、次のコマンドを実行します。

  1. vagrant ssh app
  2. sudo su deploy
  3. cd /some/dir/for/test
  4. source env/bin/activate
  5. python manage.py test

私はポイント3に到達することができましたが、ポイント4は実行できませんでした。私の試みは次の通りです:

vagrant ssh app -- -t 'cd /some/dir/for/test; sudo su deploy' 

しかし、sudoコマンドの後にもう少しコマンドを書くと、それらは実行されません。

また、迷惑な環境の外でテスト出力を元のシェルにリダイレクトする必要があります。

答えて

1

あなたは、単一のコマンドでそれをすべて行うことができます。

ここ
vagrant ssh app -- -t 'sudo -u deploy /some/dir/for/test/env/bin/python /some/dir/for/test/env/manage.py test' 

あなたはそれが-u引数を使用して、特定のユーザとしてコマンドを実行しますsudoに引数を与えることによって、無駄なsuコールを回避することができます。その後、bin/activateコマンドは環境を変更するだけなので、後で呼び出すPythonはenv/bin/pythonのものなので、フルパスで直接呼び出すことができます。

;で区切られた2つのコマンドを1回のsudo呼び出しでチェーンしたい場合は、sudoコマンドでシェルを作成する必要があります。つまり、sudo sh -c "run this; run that"です。

+0

恐ろしいおかげで! –

関連する問題