如何使用Vultr Go库获取服务器信息

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

介绍

官方的Vultr 去图书馆 可以用来
与Vultr API进行交互。 Vultr API允许
您可以控制与帐户相关联的资源,包括服务器,
dns,防火墙,快照,网络等。本教程将提供
通过创建一个简单的使用Go API官方客户端的介绍
应用程序以获取有关服务器的信息。

先决条件

运行Windows,Linux或macOS且安装了Go 1.12+的计算机。
基本的编程知识。
可选:支持Go的IDE(例如Visual Studio Code,emacs或Atom)。

目标

了解如何使用官方的Vultr API库。
编写程序以查看服务器信息。

步骤1:建立专案

首先,我们将从创建一个新模块(项目)开始。通常,您会使用
您的代码存储库的URL作为模块名称,但这超出了
本教程的范围。现在,我们将使用 服务器信息 作为模块名称。

要创建项目,请运行以下命令:

# Create the folder in the current directory.
mkdir serverinfo

# Enter the new folder.
cd serverinfo

# Initialize the module.
go mod init serverinfo

步骤2:下载资料库

接下来,我们将从GitHub(一个代码托管站点)下载API库。至
下载库,您需要使用 go get 命令。这将自动
下载库及其依赖项,同时将其添加到 go.mod 文件。
在您先前打开的同一终端中,输入以下命令:

go get github.com/vultr/govultr

步骤3:取得API金钥

要使用API​​客户端,您将需要API密钥。您可以检索您的API密钥
来自 API 的标签 帐户 您的部分
仪表板
您还需要授权您的IP地址以使用API​​密钥。你可以找到
通过转到您的IP地址 ifconfig.me。注意你
正在寻找您的公共IP,而不是您的私有IP。您的私人IP是什么
您会在计算机上的网络设置中找到,并且位于
以下CIDR范围: 10.0.0.0/8172.16.0.0/12, 要么 192.168.0.0/16

拥有IP地址后,将其添加到 访问控制 部分。在
后面的盒子 /,类型 32/32 是网络掩码的意思
255.255.255.255。这意味着该范围仅包含您的IP。

警告: 保护您的API密钥就像保护密码一样。 API
键可以访问您的整个帐户,包括帐单,服务器和存储。

步骤4:创建程序文件

现在,我们将开始研究该程序。打开我们创建的文件夹
在您选择的编辑器中,并创建一个名为 main.go

在文件内,键入或复制粘贴以下代码:

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/vultr/govultr"
)

func main() {

}

package main 告诉Go我们正在创建命令,而不是库。的
import语句声明我们将使用的依赖项。 func main()
运行程序时调用的函数。

步骤5:初始化API客户端

下一步是初始化API客户端。为此,我们需要使用
govultr.NewClient(http.Client,字符串) 功能。添加以下代码
在 – 的里面 主要() 功能:

client := govultr.NewClient(nil, "YOURAPIKEY")

更换 YOURAPIKEY 使用您之前检索的API密钥。

让我们更仔细地看一下这段代码。在左侧 :=, 我们有
client。那是变量的名称。变量存储值。在
右侧,我们有一个函数调用 govultr.NewClient。首先
参数为nil,因为我们不需要更改默认的HTTP客户端。的
第二个参数是我们用来认证自己的API密钥。的 := 运算符将右侧分配给左侧,在这种情况下,
函数调用 client

步骤6:使用API

我们的程序仍然没有执行任何操作。为了使其有用,我们将
从Vultr检索有关我们服务器的信息。我们将使用
govultr.Client.Server.List(context.Context)([]govultr.Server,错误)
功能。将以下代码添加到
结束 主要() 功能:

servers, err := client.Server.List(context.Background())
if err != nil {
    fmt.Fprintf(os.Stderr, "Error: %vn", err)
    os.Exit(1)
}

在这段代码中,我们正在调用API函数来检索服务器
信息。不用担心 语境 但是,因为那是一个
更高级的主题。现在,我们需要知道的是 语境
控制API客户端的运行方式。 context.Background() 返回一个空
语境。在将服务器信息检索到两个变量之后,
伺服器,我们检查是否有错误。如果是这样,我们告诉告知
错误的用户,并退出并返回代码1(错误)。

步骤7:显示信息

现在,我们已经在 伺服器 变量
[]政府服务器),我们实际上可以显示它。在以下位置添加以下代码
的结尾 主要() 功能:

fmt.Println("Servers:")
for _, server := range servers {
    fmt.Printf("  %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidthn",
        server.Label,
        server.MainIP,
        server.Location,
        server.PendingCharges,
        server.CurrentBandwidth,
        server.AllowedBandwidth,
    )
}

首先,我们打印(显示)标题, Servers:。然后,我们遍历
伺服器 数组,通过将其分配给索引来忽略索引 _,并分配
当前服务器 服务器 变量。在循环内部,我们显示
服务器的标签,IP地址,位置,待处理的费用,当前带宽和
允许的带宽。为了有效地做到这一点,我们使用格式字符串,即字符串
看起来像
" %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidthn"。的 %s
表示替换下一个字符串,而 %.2f 意味着打印下一个
浮点数(十进制数)四舍五入到小数点后两位。其余格式
字符串按原样打印(原样)。

步骤8:执行

此时,您的代码应如下所示:

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/vultr/govultr"
)

func main() {
    client := govultr.NewClient(nil, "YOURAPIKEY")

    servers, err := client.Server.List(context.Background())
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error: %vn", err)
        os.Exit(1)
    }

    fmt.Println("Servers:")
    for _, server := range servers {
        fmt.Printf("  %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidthn",
            server.Label,
            server.MainIP,
            server.Location,
            server.PendingCharges,
            server.CurrentBandwidth,
            server.AllowedBandwidth,
        )
    }
}

现在,我们可以运行代码。返回我们之前打开的终端,然后输入
命令 go run。输出将类似于以下内容:

Servers:
  server1 (198.51.100.4) - New Jersey - $3.70 pending charges - 17.64/1000 GB bandwidth
  server2 (198.51.100.9) - Toronto - $1.70 pending charges - 3.24/500 GB bandwidth

如果收到错误,请确保您的API密钥和IP地址正确。

结论

至此,您已经成功学习了如何使用
官方API客户端,并编写了一个程序,该程序将显示有关
您帐户中的服务器。

进一步的步骤

从这里,您可以做更多的事情。例如,您可以编写一个程序来
当内存不足时置备新服务器。您可以编写一个应用程序来
如果带宽或存储空间不足,则会自动升级服务器。您
甚至可以编写工具来根据您的帐户自动更新DNS记录
当前IP。

有关govultr库的更多信息,您可以找到govultr库
有关的文件 戈多克

govultr是一个
开源项目。
如果您在govultr中发现任何错误,可以将其报告
的GitHub。您也可以贡献
通过提交一个
拉取要求

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com