【问题标题】:Vagrant ssh with multiple arguments带有多个参数的 Vagrant ssh
【发布时间】:2017-01-19 04:28:39
【问题描述】:

我在使用 vagrant ssh 执行多个命令时遇到问题。

为了在 vagrant 环境中运行一些测试,我执行以下命令:

  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,在 vagrant 环境之外。

【问题讨论】:

    标签: python ssh vagrant


    【解决方案1】:

    您可以在一个命令中完成所有操作:

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

    在这里,您可以通过向sudo 提供参数来避免无用的su 调用,因此它使用-u 参数以给定用户身份运行命令。那么bin/activate命令只是改变环境,所以你调用的python是env/bin/python的那个,所以你可以直接用它的完整路径调用它。

    据您所知,如果您想在单个 sudo 调用中链接由 ; 分隔的两个命令,您应该在您的 sudo 命令中生成一个 shell,即:sudo sh -c "run this; run that"

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 2018-09-08
      • 2015-10-20
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多