タイトルの通りで、REST API実装してみたよというメモ。
Python/REST programming は24時間前に始めたばかりなので、まずはこんな感じで使えるようになったというログだけ記録。
もう少し手になじんだら Source Code や詳しい解説作成する予定。
興味ある人は Twitter: @ebiken 等にDMお願いします。
実装したこと:
- ネットワークインターフェース(netdev) 一覧表示 *インターフェースの詳細情報(アドレス+統計情報)
- アドレスだけを表示
- IPv4 アドレスだけを表示(mac/ipv6も実装済み)
- 統計情報だけを表示
ログ:
- ネットワークインターフェース(netdev) 一覧表示
- "interface" じゃなく "netdev" としてるのはVyOSとかに載せた時のインターフェース名との区別を付けるため
$ curl http://127.0.0.1:5000/netdev/
[
"lo",
"enp0s3",
"virbr0",
"virbr0-nic"
]
*インターフェースの詳細情報(アドレス+統計情報)
$ curl http://127.0.0.1:5000/netdev/enp0s3/
{
"address": {
"ipv4": [
{
"addr": "10.0.2.15",
"broadcast": "10.0.2.255",
"netmask": "255.255.255.0"
}
],
"ipv6": [
{
"addr": "fe80::a00:27ff:feaf:dc60%enp0s3",
"netmask": "ffff:ffff:ffff:ffff::"
}
],
"mac": [
{
"addr": "08:00:27:af:dc:60",
"broadcast": "ff:ff:ff:ff:ff:ff"
}
]
},
"stats": {
"rx-bytes": 11324896,
"rx-compressed": 0,
"rx-drop": 0,
"rx-errs": 0,
"rx-fifo": 0,
"rx-frame": 0,
"rx-multicast": 0,
"rx-packets": 53451,
"tx-bytes": 8512050,
"tx-carrier": 0,
"tx-colls": 0,
"tx-compressed": 0,
"tx-drop": 0,
"tx-errs": 0,
"tx-fifo": 0,
"tx-packets": 33368
}
}
- アドレスだけを表示
$ curl http://127.0.0.1:5000/netdev/enp0s3/address/
{
"ipv4": [
{
"addr": "10.0.2.15",
"broadcast": "10.0.2.255",
"netmask": "255.255.255.0"
}
],
"ipv6": [
{
"addr": "fe80::a00:27ff:feaf:dc60%enp0s3",
"netmask": "ffff:ffff:ffff:ffff::"
}
],
"mac": [
{
"addr": "08:00:27:af:dc:60",
"broadcast": "ff:ff:ff:ff:ff:ff"
}
]
}
- IPv4 アドレスだけを表示
ebiken@u1510d:~/nnapi/test$ curl http://127.0.0.1:5000/netdev/enp0s3/address/ipv4/
[
{
"addr": "10.0.2.15",
"broadcast": "10.0.2.255",
"netmask": "255.255.255.0"
}
]
- 統計情報だけを表示
$ curl http://127.0.0.1:5000/netdev/enp0s3/stats/
{
"rx-bytes": 11340796,
"rx-compressed": 0,
"rx-drop": 0,
"rx-errs": 0,
"rx-fifo": 0,
"rx-frame": 0,
"rx-multicast": 0,
"rx-packets": 53635,
"tx-bytes": 8542150,
"tx-carrier": 0,
"tx-colls": 0,
"tx-compressed": 0,
"tx-drop": 0,
"tx-errs": 0,
"tx-fifo": 0,
"tx-packets": 33501
}