2017-01-18 25 views
0

我在使用vagrant ssh執行多個命令時遇到問題。具有多個參數的流浪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命令後,如果我寫了更多的命令,他們不會執行。

我還需要將測試輸出重定向到流浪環境之外的原始shell。

回答

1

你可以做到這一切在一個單一的命令:

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

在這裏你可以避開無用su呼叫通過給出參數sudo所以它運行一個命令,給定用戶,使用-u說法。然後bin/activate命令只是改變環境,所以之後調用的python是env/bin/python中的那個,所以你可以直接使用它的全路徑來調用它。爲了您的所知,如果您想在單個sudo調用中鏈接由;分隔的兩個命令,則應在sudo命令中產生一個shell,即sudo sh -c "run this; run that"

+0

真棒謝謝! –