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 注释

 

posted @ 2020-08-17 10:03  一个人的孤独自白  阅读(718)  评论(0编辑  收藏  举报