在这篇博客中,我们将介绍如何在 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 环境变量:
exportGOROOT=/usr/local/go
exportGOPATH=$HOME/go
exportPATH=$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// 遍历所有参数并添加到 scriptArgsfor 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)}funcmain(){// 创建 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(){localtimestamp=$(date"+%Y-%m-%d %H:%M:%S")echo"[$timestamp] - $1"|tee-a$LOG_FILE}# 获取脚本参数args=("$@")# 打印参数并记录日志
log "脚本启动。"
log "参数列表:"forargin"${args[@]}";do
log "- $arg"done# 执行一些操作# ...# 记录操作过程
log "执行操作..."# 在这里添加你的操作代码,例如:# result=$(some_command)# log "操作结果: $result"# 退出脚本
log "脚本结束。"exit0
3. 运行 Go 脚本并通过 HTTP 访问
运行 ScriptRunner.go 脚本:
go run ScriptRunner.go
通过 HTTP 请求带参数访问:
curl http://localhost:9999/?arg1=value1&arg2=value2&arg3=value3
至此,你已经成功配置了 Go 开发环境,并通过 HTTP 请求来运行 Shell 脚本。通过这种方法,你可以轻松地在服务器上执行脚本操作,同时记录操作日志,便于后续分析和调试。希望这篇教程对你有所帮助!
版权归原作者 小小的木头人 所有, 如有侵权,请联系我们删除。