Expect 实现用户名密码自动输入
项目服务部署:
1、cd 进入 项目根目录
2、git pull 拉取分支代码 (这里需要输入代码仓库的访问用户名和密码)
3、maven 编译代码
4、进入 docker-compose 的相关路径
5、执行docker-compose 的香瓜服务更行部署操作
根据以上需求,编写了脚本:(服务器需要预先安装 expoet )
expect 使用可以参考:https://www.runoob.com/w3cnote/linux-autologin-shell.html
#!/bin/bash # git 登录的用户名 和 密码 git_username="你代码仓库登录的用户名" git_password="你代码仓库登录的密码" cd /xxx/git/xxx # 代码库根路径执行 git pull 弹出输入密码和用户名的提示复制下来的 # Username for 'https://codeup.aliyun.com'" # Password for 'https://用户名@codeup.aliyun.com': # 避免服务区中修改与提交的代码冲突 expect -c " # 防止服务器修改过本地的分支数据,放弃修改 spawn git reset --hard FETCH_HEAD interact " # 拉取代码 expect -c " # 拉取代码 git pull [origin/远端分支] [本地分支] spawn git pull # 自动输入代码仓库用户名 expect { # 可以模糊匹配 *Username* \"Username for 'https://codeup.aliyun.com'\" { # 发送用户名字符串,\n 等于输入字符串后的 回车 send \"${git_username}\n\"; # 继续执行 expect exp_continue } # 自动输入代码仓库密码,可以模糊匹配 *Password* \"Password for 'https://${git_username}@codeup.aliyun.com'\" { # 发送密码字符串,\n 等于输入字符串后的 回车 send \"${git_password}\n\" } } interact " # 编译代码 Maven 命令 mvn clean install -Dmaven.test.skip=true # 以下是 docker-compose 相关的命令操作 cd /xxx/git/xxx/docker ############################# Master #################################### # 构建服务镜像 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml build 主服务名 # 停止服务 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml stop 主服务名 # 启动服务 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml up -d 主服务名 # 睡眠分钟,这里测试的只有一主一从,为了确保主服务和从服务不同时停止,睡眠几分钟确保主服务完全启动 sleep 3m ############################# Slave从服务 ###################################### # 构建服务镜像 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml build 从服务名 # 停止服务 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml stop 从服务名 # 启动服务 docker-compose -f /xxx/git/xxx/docker/docker-compose.yml up -d 从服务名
本文来自博客园,作者:Vermeer,转载请注明原文链接:https://www.cnblogs.com/chxlay/p/15793260.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步