Як використовувати бібліотеку Vultr Go для отримання інформації про сервер

Вступ

Для взаємодії з Vultr API можна використовувати офіційну бібліотеку Vultr Go . API Vultr дозволяє керувати ресурсами, пов’язаними з вашим обліковим записом, включаючи сервери, DNS, брандмауер, знімки, мережу тощо. Цей підручник познайомиться з використанням офіційного клієнта Go API, створивши просту програму для отримання інформації про ваші сервери.

Передумови

  • Комп’ютер під керуванням Windows, Linux або macOS із встановленою Go 1.12+.
  • Базові знання програмування.
  • Додатково: IDE з підтримкою Go (наприклад, Visual Studio Code, emacs або Atom).

Цілі

  • Щоб дізнатися, як користуватися офіційною бібліотекою API Vultr.
  • Щоб написати програму для перегляду інформації про сервер.

Крок 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 mainGo, що ми створюємо команду, а не бібліотеку. Оператор імпорту оголошує залежності, які ми будемо використовувати. func main()це функція, яка викликається, коли ми запускаємо нашу програму.

Крок 5: Ініціалізація клієнта API

Наступним кроком є ​​ініціалізація клієнта API. Для цього нам потрібно скористатися функцією govultr.NewClient(http.Client, string) . Додайте такий код усередину функції main() :

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

Замініть YOURAPIKEYключ API, який ви отримали раніше.

Давайте розглянемо цей код трохи ближче. З лівого боку :=ми маємо client. Це ім'я змінної . Змінна зберігає значення. З правого боку у нас є виклик функції govultr.NewClient . Першим параметром є нуль, тому що нам не потрібно змінювати клієнта 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() повертає порожній контекст . Після отримання інформації про сервер у дві змінні, servers і 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:. Потім ми перебираємо масив servers , ігноруючи індекс, призначаючи його до _, і призначаючи поточний сервер змінній server . Усередині циклу ми відображаємо мітку сервера, IP-адресу, розташування, незавершені платежі, поточну пропускну здатність і дозволену пропускну здатність. Щоб зробити це ефективно, ми використовуємо рядки формату , рядок, який виглядає як " %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n". Засіб %sдля заміни наступного рядка, а %.2fзасіб для друку наступного float (десяткового числа) округлено до 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 — це проект з відкритим кодом . Якщо ви знайдете якісь помилки в goultr, ви можете повідомити про них на GitHub . Ви також можете безпосередньо внести свій вклад в код, надіславши запит на витяг .

Залишити коментар

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

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

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

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

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

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

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

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

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

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

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