netbox api - ぶやかー

Netboxは残念ながら、WebUI上のexportでexportしたデータはたいがいインポートできない・・・
そもそも、exportがいまいち。

なので、API使った方が良いインポートできる形で取得したほうが良い。

手軽にcurlで出来る。ただしjqはインストール必須

まずはtoken作成

右上のユーザ名 > Profile&Settings > API Token

Add a Tokenで新規作成しておく

基本形

NETBOX='xxx.xxx.xxx.xxx'
TOKEN='xxxxxxxxx'

curl -X GET \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json; indent=2" \
http://$NETBOX/api/dcim/cables/ \
--data '{}'

ケーブル一覧

JSONをjqでインポートも可能なCSV形式に変換しておくと便利。

curl -X GET \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json; indent=2" \
http://$NETBOX/api/dcim/cables/ \
--data '{}'| \
jq -r '["side_a_device","side_a_type","side_a_name","side_b_device","side_b_type","side_b_name","type","status","label","color","length","length_unit"]
,(."results"[]|[.termination_a.device.name,.termination_a_type,.termination_a.name,.termination_b.device.name,.termination_b_type,.termination_b.name,.type,.status.value,.label,.color,.length,.length_unit.value])
|@csv'

特定モデルのインタフェース確認

登録済みのモデルであれば、インタフェース一覧表示も可能。
対象モデルのslugでデバイスタイプのIDを取得して、そのIDのインタフェースだけ抜きだす。

なぜか、interface-templates/?slug=fg-200fとすると全然違う結果になるのでIDでフィルタする。

curl -X GET \
  -H "Authorization: Token $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json; indent=2" \
  http://$NETBOX/api/dcim/device-types/?slug=fg-200f | 
  jq '.results[]|[.id]'

curl -X GET \
  -H "Authorization: Token $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json; indent=2" \
  http://$NETBOX/api/dcim/interface-templates/?devicetype_id=144 |
  jq '.results[]|[.name, .type.value]'

この記事を書いた人 Wrote this article

kmatsunuma

TOP