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]'