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

    }

}

 

posted @ 2024-09-16 11:59  北京小小鸟  阅读(37)  评论(0)    收藏  举报