我们常常需要将新的jar包部署在服务器中,当还没有构建流水线的情况下,可以使用如下脚本快速的完成部署工作!
- 我们不用登陆Xshell等服务器连接工具
- 我们不用反复输入一长串的scp密码
- 我们不用反复输入服务器密码
针对Mac系统,Window系统可以参考
编写shell脚本
带解释的版本
# 指定该脚本的执行脚本,这里我们不使用bash,而是expect
#!/usr/bin/expect -f
# 设置超时时间,单位为秒
set timeout 3
# spawn 是expect的内部命令用于给ssh运行进程加个壳传递交互指令。
spawn scp /Users/hello/project-service/target/project-service-1.0.3.jar root@xx.xxx.xx.xx:/home/service/project
set timeout 1
# expect 和expect一样,判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的
expect "*password:"
# 执行交互动作,与手工输入密码的动作等效。
send "yourPassword\r"
# 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行
interact
sleep 2
供复制的干净版本
#!/usr/bin/expect -f
set timeout 3
spawn scp /Users/hello/project-service/target/project-service-1.0.3.jar root@xx.xxx.xx.xx:/home/service/project
set timeout 1
expect "*password:"
send "yourPassword\r"
interact
sleep 2
配置环境变量
vim ~/.zshrc
或者 vim ~/.bash_profile
添加如下行:
alias deploy="/Users/hello/code/shell/scp85.sh"
: wq保存
输入source ~/.zshrc
或者 source ~/.bash_profile
使配置生效
使用
我们在系统终端输入deploy即可自动完成部署。