用于SSH的别名和在Vagrant VM中运行命令

时间:2015-05-15 10:15:28

标签: bash ssh vagrant

我在一个文件夹中有2个流浪汉机器,而且我经常不得不同时使用ssh并运行相同的命令。基本上我做:

$ vagrant ssh machine1
[vagrant@machine1 ~]$ sudo rm -rf /tmp/cache/*
[vagrant@machine1 ~]$ exit

$ vagrant ssh machine2
[vagrant@machine2 ~]$ sudo rm -rf /tmp/cache/*
[vagrant@machine2 ~]$ exit

我想创建一个别名或一个我可以运行的小脚本,它会做那些事情,所以我不需要一次又一次地输入所有这些...
有什么想法吗?

2 个答案:

答案 0 :(得分:2)

为此,您可以添加别名:

alias vssh="vagrant ssh machine1 -c 'sudo rm -rf /tmp/cache/*'; vagrant ssh machine2 -c 'sudo rm -rf /tmp/cache/*'"

将此添加到您的个人资料(即〜/ .bash_profile或类似文件),然后通过运行重新加载:

. ~/.bash_profile

答案 1 :(得分:1)

如果你真的很可爱,你可以这样做:

alias vagrantsshall="function _() { for box in \`vagrant status --machine-readable | sed -nE 's/[0-9]+,([^,]+),state,running/\1/p'\`; do echo $box: && vagrant ssh $box -c \$1; done;}; _"

它适用于1到n个框的任何Vagrant设置,对当前启动的所有框运行命令。