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

介绍

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

先决条件

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

目标

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

步骤1:建立专案

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

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

# 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​​密钥。您可以转到ifconfig.me来找到您的IP地址。请注意,您正在寻找的是公共 IP,而不是私有IP。你的私有IP是你会发现在你的计算机上的网络设置的东西,并且是在以下CIDR范围之一:10.0.0.0/8172.16.0.0/12192.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告诉转到我们正在创建一个命令,而不是一个图书馆。import语句声明我们将使用的依赖项。func main()是运行程序时调用的函数。

步骤5:初始化API客户端

下一步是初始化API客户端。为此,我们需要使用 govultr.NewClient(http.Client,string)函数。在main()函数内添加以下代码:

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,错误) 函数。在main()函数的末尾添加以下代码:

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

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

步骤7:显示信息

现在我们在服务器变量([] govultr.Server)中有了服务器阵列,我们可以实际显示它了。在main()函数的末尾添加以下代码:

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

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

步骤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: %v\n", err)
        os.Exit(1)
    }

    fmt.Println("Servers:")
    for _, server := range servers {
        fmt.Printf("  %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n",
            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客户端的基础知识,并编写了一个程序来显示有关您帐户中服务器的信息。

进一步的步骤

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

有关govultr库的更多信息,你可以找到govultr库文档godoc

govultr是一个 开源项目。如果您在govultr中发现任何错误,可以在GitHub上报告它们 。您还可以通过提交拉取请求直接为代码贡献力量 。



Leave a Comment

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息