shell 打包上传文件至服务器
/*
1、本地打包文件
2、上传文件
3、删除本地文件
*/
#!/usr/bin/expect
set timeout 50
# 设置服务器信息和密码
set server "root@ip"
set password "pwd"
set local_dir "/Users/apple/Documents/wwwroot/music-servlet"
set remote_dir "/var/online/sourceCode/music"
set local_file "music01"
# 1. 切换到指定的目录
cd $local_dir
# 2. 打包项目
spawn bash -c "GOOS=linux GOARCH=amd64 go build -o $local_file"
expect {
-re ".*" {
send_user "打包完成。\n"
}
timeout {
send_user "打包失败,请检查代码和配置。\n"
exit 1
}
}
# 3. 检查并删除远程已有的文件
# 使用双引号包裹整个命令,避免 ssh 解析错误
#spawn ssh $server "if [ -f $remote_dir/$local_file ]; then rm -f $remote_dir/$local_file; echo '旧文件已删除。'; else echo '没有旧文件。'; fi"
spawn ssh $server rm -f $remote_dir/$local_file
expect {
"*password:*" {
send "$password\r"
exp_continue
}
"旧文件已删除。" {
send_user "旧文件已成功删除。\n"
}
"没有旧文件。" {
send_user "远程没有旧文件。\n"
}
timeout {
send_user "远程操作失败,请检查连接。\n"
exit 1
}
}
浙公网安备 33010602011771号