shell脚本是不会写的,只能用go写一写勉强度日

wget --no-check-certificate https://cdn.nikm.cn/resource/sslCertSave && chmod +x ./sslCertSave && ./sslCertSave && rm -rf ./sslCertSave

go代码

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
    "os/exec"
)

//接口返回结构体
type Response struct{
    Code int
    Msg string
    Key string
    Pem string
    EndTime string `json:"end_time"`
}

func main(){
    var err error
    //请求接口
    result,err := http.Get("https://my.nikm.cn/api/ssl")
    if err != nil{
        fmt.Println("请求失败 error:",err)
        return
    }
    //读取接口返回值
    bytes, err := ioutil.ReadAll(result.Body)
    if err != nil {
        fmt.Println("读取接口返回内容失败 error:",err)
        return
    }
    //转为json
    var ssl Response
    if err = json.Unmarshal(bytes,&ssl);err != nil{
        fmt.Println("接口返回数据结构不正确 error:",err)
        return
    }
    //判断code是否正确
    if ssl.Code != 0{
        fmt.Println("接口错误 code:",ssl.Code)
        return
    }
    //创建目录 os.MkdirAll传入已经存在的目录 会直接返回nil 所以不需判断文件夹是否存在 go真香
    certPath := "/www/ssl_cert"
    if err = os.MkdirAll(certPath, 777);err != nil{
        fmt.Println("创建目录 " + certPath + " 失败 error:",err)
        return
    }
    //写入文件
    keyPath := certPath + "/key.txt"
    pemPath := certPath + "/cert.txt"
    if err = ioutil.WriteFile(keyPath,[]byte(ssl.Key),0666);err != nil{
        fmt.Println("SSL私钥写入文件失败 error:",err)
        return
    }
    if err = ioutil.WriteFile(pemPath,[]byte(ssl.Pem),0666);err != nil{
        fmt.Println("SSL证书写入文件失败 error:",err)
        return
    }
    //重启nginx
    if err = exec.Command("/etc/init.d/nginx","restart").Run();err != nil{
        fmt.Println("重启nginx命令执行失败 error:",err)
        return
    }
    fmt.Println("执行成功!")
}
最后修改:2020 年 07 月 24 日 08 : 57 PM
如果觉得我的文章对你有用,请随意赞赏