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

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

安装 Go 环境

1. 下载 Go 安装包

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

bash 复制代码
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz -P /usr/local

2. 解压安装包

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

bash 复制代码
cd /usr/local && tar -zxvf go1.22.4.linux-amd64.tar.gz

3. 配置环境变量

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

bash 复制代码
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin

4. 重新加载配置文件

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

bash 复制代码
source ~/.bashrc

编写 ScriptRunner.go 和 script.sh 脚本

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

1. ScriptRunner.go

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

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 文件,并添加以下内容:

bash 复制代码
#!/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 脚本:

bash 复制代码
go run ScriptRunner.go

通过 HTTP 请求带参数访问:

bash 复制代码
curl http://localhost:9999/?arg1=value1&arg2=value2&arg3=value3

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

相关推荐
程序员小杰@2 分钟前
Spring Boot 常用注解分类速记
java·spring boot·后端
挖掘狂人5 分钟前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
vx_Biye_Design7 分钟前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
打工仔折腾 AI19 分钟前
用UU远程把家里电脑变成AI Agent常驻服务器:CLI、端口映射与代理实测
运维·服务器·人工智能·后端·python·电脑·ai agent 实战
明月_清风29 分钟前
AI Agent 进入系统层:现在有哪些开源项目在解决这个问题?
人工智能·后端
泡海椒36 分钟前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
白杨尚青1 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
microrain1 小时前
权限改了,接口立刻生效,菜单要等重新登录:SagooIoT 权限体系的四道闸门
物联网·golang·开源·sagooiot
弈栈录1 小时前
MySQL 事务、索引与锁:后端开发必须掌握的数据库基础
数据库·后端
江江爱编程1 小时前
java零基础保姆级教学01
java·开发语言