bash - Vagrant:如何通过 guest shell 中的命令在主机上运行脚本?

标签 bash shell vagrant atom-editor vagrant-plugin

可以打开端口、网络文件,并且有插件允许在 Vagrant 的配置过程中运行访客或主机 [shell] 命令。

我想做的是能够(可能通过 bash 别名)在 Vagrant guest /VM 中运行一个命令,并让它在主机上执行一个命令,理想情况下在命令上传递一个变量行。

示例:在我的主机中,我运行 Atom 编辑器(同样适用于 TextMate,无论如何)。如果我想在 VM 中处理共享文件,我必须在主机中手动打开该文件,方法是直接在编辑器中打开它,或运行“atom filename”shell 命令。

我想要奇偶校验,所以在虚拟机内部,我可以运行“atom filename”,这会将文件名传递给虚拟机外部主机中的“atom $1”脚本,并在我的主机编辑器中打开它(原子)。


注意:我们使用 Salt 进行 Vagrant 配置,使用 NFS 进行挂载,这是物有所值的。当然,使用 key 进行 ssh。

奖励问题:使用 .gitconfig 作为其合并冲突编辑器使其工作(如果前者可行,应该就可以工作,对吧?)。

最佳答案

这是一个非常有趣的用例,我以前从未听说过。 Vagrant 中没有处理此问题的 native 方法,但此功能已以 local shell provisioner 的形式添加到 Packer 中。 .您可以在 Vagrant project 上打开 GitHub 问题并提出相同的功能。不过,请仔细检查当前的问题列表,因为可能有人先于您。

与此同时,如果您决心这样做,您确实有一个解决方法...

  1. 在您的主机上创建一个 ssh key 对。
  2. 使用Salt将私钥添加到/home/vagrant/.ssh中。
  3. 使用 shell provisioner 从 guest 在主机上运行远程 ssh 命令。

这些命令将采用...的形式

ssh username@192.168.0.1 "ls -l ~"

根据我的经验,192.168.0.1 IP 始终指向主机,但您的情况可能会有所不同。无论如何,我都不是网络专家。

我希望这对你有用,我认为 Vagrant 的本地 shell 供应器将是一个合理的功能。

关于bash - Vagrant:如何通过 guest shell 中的命令在主机上运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639811/

相关文章:

objective-c - 您如何引用打包在您的应用程序包中的 shell 脚本?

python - 从 shell 控制台手动运行 python3 脚本和命令

git - git 如何向预提交 Hook 显示不同的索引?

ubuntu - Vagrant Gitlab 安装失败

linux - 如何在 Linux Gnome 终端中格式化 stat 表达式的输出?

python - 通过 shell 脚本调用 python 脚本时出现 ImportError

linux - grep 查找包含 jboss 的行- 直到下一个/

shell - 使用 rot13 和 tr 命令获得加密的电子邮件地址

shell - 如何更改新添加的列中第一行的值

ruby - vagrant 从 github 安装插件