• 在 Ubuntu 环境中安装 Go 语言及运行脚本


    在这篇博客中,我们将介绍如何在 Ubuntu 环境中安装 Go 语言,并编写一个 Go 脚本来运行 Shell 脚本。这个教程将帮助你轻松配置 Go 开发环境,并通过 HTTP 请求来执行 Shell 脚本。

    安装 Go 环境

    1. 下载 Go 安装包

    首先,下载 Go 安装包 go1.22.4.linux-amd64.tar.gz。你可以使用 wget 命令来下载文件:

    wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz -P /usr/local
    

    2. 解压安装包

    将下载的安装包解压到 /usr/local 目录:

    cd /usr/local && tar -zxvf go1.22.4.linux-amd64.tar.gz
    

    3. 配置环境变量

    编辑你的 ~/.bashrc 或 ~/.profile 文件,添加以下内容以配置 Go 环境变量:

    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:/usr/local/go/bin
    

    4. 重新加载配置文件

    执行以下命令重新加载配置文件,使环境变量生效:

    source ~/.bashrc
    

    编写 ScriptRunner.go 和 script.sh 脚本

    接下来,我们将编写一个 Go 脚本 ScriptRunner.go 和一个 Shell 脚本 script.sh,通过 HTTP 请求来运行 Shell 脚本。

    1. ScriptRunner.go

    首先,创建 ScriptRunner.go 文件,并添加以下内容:

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
        "os/exec"
    )
    
    type ScriptRunner struct {
        scriptPath string // 脚本路径
    }
    
    func (s *ScriptRunner) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        // 获取请求参数
        params := r.URL.Query()
        var scriptArgs []string
    
        // 遍历所有参数并添加到 scriptArgs
        for key, values := range params {
            for _, value := range values {
                scriptArgs = append(scriptArgs, fmt.Sprintf("%s=%s", key, value))
            }
        }
    
        // 创建命令
        cmd := exec.Command(s.scriptPath, scriptArgs...)
    
        // 执行命令
        output, err := cmd.CombinedOutput()
        if err != nil {
            log.Printf("Error running script: %s\n", err)
            fmt.Fprintf(w, "Error running script: %s\n", err)
            return
        }
    
        // 写入响应
        log.Printf("Script output: %s\n", output)
        fmt.Fprintf(w, "%s", output)
    }
    
    func main() {
        // 创建 ScriptRunner 实例
        scriptRunner := &ScriptRunner{scriptPath: "/home/test/script.sh"}
    
        // 配置日志输出格式
        log.SetFlags(log.LstdFlags | log.Lshortfile)
    
        // 启动 HTTP 服务并添加启动日志
        http.HandleFunc("/", scriptRunner.ServeHTTP)
        log.Println("Starting server on :9999")
        if err := http.ListenAndServe(":9999", nil); err != nil {
            log.Fatalf("Server failed to start: %v", err)
        }
    }
    
    

    2. 编写 shell 脚本

    创建 script.sh 文件,并添加以下内容:

    #!/bin/bash
    
    # 常量定义
    LOG_FILE="./log_file.log"  # 请替换为实际的日志文件路径
    
    # 定义日志函数
    log() {
        local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
        echo "[$timestamp] - $1" | tee -a $LOG_FILE
    }
    
    # 获取脚本参数
    args=("$@")
    
    # 打印参数并记录日志
    log "脚本启动。"
    log "参数列表:"
    for arg in "${args[@]}"; do
        log "- $arg"
    done
    
    # 执行一些操作
    # ...
    
    # 记录操作过程
    log "执行操作..."
    # 在这里添加你的操作代码,例如:
    # result=$(some_command)
    # log "操作结果: $result"
    
    # 退出脚本
    log "脚本结束。"
    exit 0
    
    

    3. 运行 Go 脚本并通过 HTTP 访问

    运行 ScriptRunner.go 脚本:

    go run ScriptRunner.go
    

    通过 HTTP 请求带参数访问:

    curl http://localhost:9999/?arg1=value1&arg2=value2&arg3=value3
    

    至此,你已经成功配置了 Go 开发环境,并通过 HTTP 请求来运行 Shell 脚本。通过这种方法,你可以轻松地在服务器上执行脚本操作,同时记录操作日志,便于后续分析和调试。希望这篇教程对你有所帮助!

  • 相关阅读:
    Java_封装
    chrome 浏览器个别字体模糊不清
    Java项目硅谷课堂学习笔记-P1项目概述以及MybatisPlus使用
    3D-2D PNP
    智慧公厕预见幸福生活、美好未来
    斩获 offer 的 Java 面试宝典
    通过开源如何赚钱生存发展
    C. Carrying Conundrum(思维 + 奇偶数位)
    服务器新建FTP文件备份的地址
    亚马逊运营培训自动型广告如何做高排名
  • 原文地址:https://blog.csdn.net/qq_15603633/article/details/139959978