Как использовать библиотеку Vultr Go для получения информации о сервере

Вступление

Официальная библиотека Vultr Go может использоваться для взаимодействия с API Vultr . API Vultr позволяет вам управлять ресурсами, связанными с вашей учетной записью, включая серверы, DNS, брандмауэр, снимки, сеть и многое другое. Из этого туториала вы узнаете, как использовать официальный клиент Go API, создав простое приложение для получения информации о ваших серверах.

Предпосылки

  • Компьютер под управлением Windows, Linux или macOS с установленной Go 1.12+.
  • Базовые знания программирования.
  • Необязательно: IDE, поддерживающая Go (например, код Visual Studio, 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: Загрузка библиотеки

Далее мы загрузим библиотеку API с GitHub (сайт хостинга кода). Для загрузки библиотек необходимо использовать go getкоманду. Это автоматически загрузит библиотеку и ее зависимости при добавлении ее в файл go.mod . В том же терминале, который вы открыли ранее, введите следующую команду:

go get github.com/vultr/govultr

Шаг 3. Получение ключа API

Чтобы использовать клиент API, вам понадобится ваш ключ API. Вы можете получить ключ API на вкладке API в разделе « Учетная запись » на панели инструментов . Вам также необходимо авторизовать свой IP-адрес для использования ключа API. Вы можете найти свой IP-адрес, перейдя на ifconfig.me . Обратите внимание, что вы ищете свой публичный IP, а не свой частный. Ваш частный IP-адрес - это то, что вы найдете в настройках сети на вашем компьютере, и находится в одном из следующих диапазонов CIDR: 10.0.0.0/8 , 172.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, 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, error) . Добавьте следующий код в конец функции 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 () возвращает пустой контекст . После того, как мы извлекаем информацию о сервере в две переменные, server и err , мы проверяем, была ли ошибка. Если это так, мы сообщаем пользователю сообщить об ошибке и завершаем работу с кодом 1 (ошибка).

Шаг 7: Отображение информации

Теперь, когда у нас есть массив серверов в переменной Servers ( [] 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:. Затем мы перебираем массив серверов , игнорируя индекс, присваивая его _и назначая текущий сервер переменной сервера . Внутри цикла мы отображаем метку сервера, 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-клиента и напишите программу, которая будет отображать информацию о серверах в вашей учетной записи.

Дальнейшие шаги

Отсюда вы можете сделать гораздо больше. Например, вы можете написать программу для предоставления нового сервера, когда у вас мало памяти. Вы можете написать приложение для автоматического обновления вашего сервера, когда у вас недостаточно пропускной способности или хранилища. Вы даже можете написать инструмент для автоматического обновления записей DNS на основе вашего текущего IP.

Для получения дополнительной информации о библиотеке govultr вы можете найти документацию по библиотеке govultr по godoc .

govultr - проект с открытым исходным кодом . Если вы обнаружите какие-либо ошибки в govultr, вы можете сообщить о них на GitHub . Вы также можете внести свой вклад в код, отправив запрос на извлечение .



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше