环境
服务器: CentOS Linux release 7.6.1810 (Core)
客户端: macOS Sonoma 14.1.2 (23B92)
开发使用ftp自动上传到/www/wwwroot/dirDev文件夹
自动备份并发布程序
备份/www/wwwroot/dirOnline文件夹,并将开发项目/www/wwwroot/dirDev自动同步到线上环境/www/wwwroot/dirOnline
保存到文件autoDevToOnline.ssh
#!/usr/bin/expect# 服务器信息
set IP "XX.XX.XX.XXX"
set USER "root"
set PASSWORD "*****"
# 线上项目路径
set REMOTE_PATH "/www/wwwroot/dirOnline"
# 开发项目路径
set DEV_PATH "/www/wwwroot/dirDev"
# 备份文件名
set BACKUP_PATH "${REMOTE_PATH}_backup_[exec date +%Y%m%d%H%M%S]"# 设置超时时间
set timeout -1# 开始 SSH 连接
spawn ssh $USER@$IP
expect {"yes/no" { send "yes\r"; exp_continue }"password:" { send "$PASSWORD\r" }
}# 远程执行命令
expect "#"
send "echo '===== 开始备份 ====='\r"
send "cp -r $REMOTE_PATH $BACKUP_PATH\r"
send "echo '===== 备份完成:$BACKUP_PATH ====='\r"# 同步命令
# rsync -av --delete --exclude='.env' --exclude='.user.ini' /www/wwwroot/devdir/ /www/wwwroot/onlinedir/
send "echo '===== 开始同步 smartFactory-dev 到 smartFactory ====='\r"
send "rsync -av --delete --exclude='.env' --exclude='.user.ini' $DEV_PATH/ $REMOTE_PATH/\r"
send "echo '===== 同步完成 ====='\r"# 退出 SSH
send "exit\r"
expect eof