LoginSignup
4
4

More than 5 years have passed since last update.

メモ:Linux ネットワークインターフェース(netdev)情報を取得するREST API 作ってみた

Posted at

タイトルの通りで、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
}
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4