如何使用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

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

重置Windows Server管理员密码

重置Windows Server管理员密码

有时,您在Windows上忘记了本地管理员密码,需要将其重置。可以很容易地重置该密码

Vultr WHMCS模块

Vultr WHMCS模块

注意:在安装Vultr WHMCS模块模块信息版本之前,请完整阅读本文档:2.0.0(更新)发行日期:2019年6月25日

配置专用网络

配置专用网络

如果您将专用网络分配给现有计算机(或部署自己的操作系统),则需要在专用计算机上配置IP地址。

BGP公告的授权书示例

BGP公告的授权书示例

请求BGP公告的授权时,请使用以下模板。授权信[日期]可能涉及的人Thi

哪些端口被阻塞?

哪些端口被阻塞?

为了网络安全,我们阻止了多个出站端口。默认情况下被阻止您可以通过打开支持通知单来请求删除这些阻止。TCP端口2

如何在Vultr控制面板中创建反向DNS或PTR记录

如何在Vultr控制面板中创建反向DNS或PTR记录

Vultr反向DNS简介为了为您的实例IP地址添加PTR或反向DNS记录,您需要执行以下概述的步骤:

Windows Server 2016恢复模式

Windows Server 2016恢复模式

在Windows Server 2016上访问恢复模式后,您可能会遇到停止错误(蓝屏)。解决方法是访问“修复计算机”菜单

进入单用户模式(重置根密码)

进入单用户模式(重置根密码)

要重置服务器的root密码,您将需要引导到单用户模式。在Vultr客户门户中访问您的服务器,然后执行以下步骤

安装驱动程序更新后修复Windows VPS

安装驱动程序更新后修复Windows VPS

Microsoft最近通过Windows Update发布了驱动程序,该驱动程序可能阻止运行Windows的Vultr VPS实例正常启动。这些驱动程序称为:

使用两因素身份验证登录到Vultr控制面板

使用两因素身份验证登录到Vultr控制面板

两因素身份验证(2FA)是一种技术,它通过要求额外的身份验证步骤才能登录,从而增加了一层安全保护。

Vultr DDoS保护

Vultr DDoS保护

现在,我们免费提供10Gbps DDoS保护,以免受纽约/新泽西州所有Vultr专用云(VDC)实例的攻击。DDoS保护如何工作?

RPKI

RPKI

RPKI(资源公钥基础结构)是一种有助于防止BGP劫持的方法。它使用加密签名来验证是否允许ASN

具有浮动IP和BGP的Vultr的高可用性

具有浮动IP和BGP的Vultr的高可用性

Vultr允许您组合我们的两个功能(浮动IP和BGP)以实现高可用性。安装程序将需要两个实例

Vultr数据可移植性指南

Vultr数据可移植性指南

如何从Vultr下载云数据?Vultr平台上的数据可移植性我们提供了许多简单的解决方案供您下载

在Windows Server上更正时间

在Windows Server上更正时间

默认情况下,带有Windows Server 2012的Vultr VPS的系统时间设置为UTC时区。您可以根据需要更改时区,但可以更改时区

在VPS上配置IPv6

在VPS上配置IPv6

这些示例中的每一个都假定一个IPv6子网为2001:db8:1000 :: / 64。您将需要使用已分配的子网更新它们。我们将成为我们

更改Postfix出站IP地址

更改Postfix出站IP地址

当服务器分配了多个IP地址时,Postfix会随机选择出站电子邮件的IP地址。默认的Postfix行为可以恢复

使用Vultr启动脚本自动执行Ubuntu 16更新

使用Vultr启动脚本自动执行Ubuntu 16更新

Ubuntu 16及更高版本使用systemd计时器执行与apt相关的定期任务(例如更新软件包列表和应用无人值守的升级)。锡

在Vultr VPS上运行CoreOS

在Vultr VPS上运行CoreOS

请阅读:Vultr现在在订购页面上提供CoreOS-本指南说明了如何手动设置CoreOS。这些说明将引导您完成跑步

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。