首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过漫游触发器插件在主机上运行嵌套命令

通过漫游触发器插件在主机上运行嵌套命令
EN

Stack Overflow用户
提问于 2015-08-25 18:53:10
回答 2查看 864关注 0票数 1

我正在尝试使用漫游触发器插件和scp将一些文件从来宾复制回主机。

在ssh上使用scp作为:

scp -r -P 2209 -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1:/guest/path/to/file host_path

使用上面的2209端口,因为vagrant ssh-config显示映射的主机端口是2209

为避免手动查找host-port,请将命令修改为

scp -r -P $(vagrant ssh-config | grep Port | grep -o '[0-9]+') -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1:/guest/path/to/file host_path

这在主机上按预期工作,但是在config.trigger块中提供给run时,它似乎没有被评估。

在主机上使用触发器插件运行嵌套命令的方法是什么?

Edit -1 :根据Marc的评论发布触发器块

代码语言:javascript
复制
  config.trigger.after :provision do
    run "mkdir -p host_sync"
    hport_cmd = "$(vagrant ssh-config | grep Port | grep -o '[0-9]\+')"

    run "scp -r -P " + hport_cmd +  " -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1:/guest/path/to/file/* host_sync"

  end
EN

回答 2

Stack Overflow用户

发布于 2015-08-27 20:50:06

下面的trigger块产生了预期的结果。

代码语言:javascript
复制
  config.trigger.after :provision do
    run "mkdir -p host_sync"
    hport = `vagrant ssh-config`.split("\n  ").find{|e| e.start_with?("Port") }.split(" ")[1] 
    run "scp -r -P #{hport} -o StrictHostKeyChecking=no -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1:/guest/path/to/file/*  host_sync"
  end
票数 1
EN

Stack Overflow用户

发布于 2015-08-25 23:19:57

我建议在Vagrantfile的顶部(在配置的上面,字面意思是在第1行)中,将-o设置为hport = %x[vagrant ssh-config | grep Port | grep config '0-9+']作为完整的ruby评估

代码语言:javascript
复制
hport = %x[vagrant ssh-config | grep Port | grep -o '[0-9]\+']
Vagrant.configure(2) do |config|
 ...snip...

config.trigger.after :provision do
  run "mkdir -p host_sync"
  run "scp -r -P " + #{hport} +  " -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1:/guest/path/to/file/* host_sync"

end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32202112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档