我正在尝试使用漫游触发器插件和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的评论发布触发器块
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发布于 2015-08-27 20:50:06
下面的trigger块产生了预期的结果。
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发布于 2015-08-25 23:19:57
我建议在Vagrantfile的顶部(在配置的上面,字面意思是在第1行)中,将-o设置为hport = %x[vagrant ssh-config | grep Port | grep config '0-9+']作为完整的ruby评估
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"
endhttps://stackoverflow.com/questions/32202112
复制相似问题