Vagrant SSH登录后立即执行一个脚本或命令的方法
需求
客户想要在vagrant外部有一个脚本去执行vagrant里面的一个脚本
解决方案
vagrant ssh -c '/the_path_of_your_shell/your_shell.sh'
以上脚本会在执行后退出vagrant,如果想要执行后继续保持vagrant的登录状态,只需如下修改,加入 ;/bin/bash
vagrant ssh -c '/the_path_of_your_shell/your_shell.sh;/bin/bash'
执行命令
vagrant ssh -c 'cd /usr/local;ls;/bin/bash'
window执行bat例子
cmd /k "cd /d D:\vb_centos_box & vagrant up & vagrant ssh -c 'cd /dnmp;docker-compose up -d;/bin/bash' "
@echo off :again cls echo. echo. echo ######################请选择要执行的操作###################################### echo ----------------------输入数字1并按回车,启动虚拟机,并运行dnmp环境---------------------- echo ----------------------输入数字2并按回车,进入已启动的虚拟机---------------------- echo ----------------------输入数字3并按回车,进入虚拟机,进入docker php容器---------------------- echo ----------------------输入数字4并按回车,进入虚拟机,进入docker php容器,启动导入队列---------------------- echo ----------------------输入任何其它字符,终止批处理 ---------------------- echo. echo. echo 请选择要执行的操作: set /p num= if "%num%"=="1" ( cls cmd /k "cd /d D:\vb_centos_box & vagrant up & vagrant ssh -c 'cd /dnmp;docker-compose up -d;/bin/bash' " pause ) if "%num%"=="2" ( cls cmd /k "cd /d D:\vb_centos_box & vagrant ssh -c 'cd /dnmp;sudo -s;/bin/bash'" pause rem goto again ) if "%num%"=="3" ( cls cmd /k "cd /d D:\vb_centos_box & vagrant ssh -c 'cd /dnmp;docker exec -it php sh;cd /app/cst-group;/bin/bash' " pause rem goto again ) if "%num%"=="4" ( cls cmd /k "cd /d D:\vb_centos_box & vagrant ssh -c 'cd /dnmp;docker exec -it php sh;cd /app/cst-group/;nohup php yii data-import-queue/listen > ../queue_nohup.log 2>&1 &;/bin/bash' " pause rem goto again ) rem 注释