シェルスクリプトを使ってmacOS上で有効になっている物理ネットワークデバイス名を取得する
はじめに
非常に限定されたシチュエーションに関する内容です。
macOS プラットフォームに限定ですが、現在接続中の無線/有線ネットワークデバイスを抽出したいという相談がありました。
「なるほどそういう要件もあるのだな」と思うと同時に興味深かったため、対応方法を考えてみました。
検証環境
networksetup
コマンドを利用する
macOS 上のネットワークインタフェースを操作するためのコマンドとして、 networksetup
があります。
こちらのコマンドには様々なオプションが用意されています。
まずは networksetup --listallhardwareports
を使って、ネットワークインタフェースハードウェアを一覧出力できます。
それぞれのネットワークハードウェアが 3 行のまとまりで出力されています。
個別のハードウェアがネットワーク接続のために利用されているかを判定するために、 networksetup -getinfo <HARDWARE_PORT>
を使って情報を取得できます。
IP address
に IP アドレスが割り当てられているかどうかでネットワーク接続済みのインタフェースか判定できそうです。
現在接続中の無線/有線ネットワークデバイスを抽出
ここまで見てきた networksetup -listallhardwareports
と networksetup -getinfo
を組み合わせて、ネットワーク接続済みのハードウェアを抽出してみます。
僕の環境では、 "Wi-Fi" 接続だけが有効になっていました。
USB や Thunderbolt 経由で LAN ケーブルを接続している場合には、対象のハードウェア名も表示されます。
名前だけでなく、ネットワーク接続情報も合わせて出力したい場合は以下のようになります。
ひとこと
ネットワーク接続済みの物理インタフェース(Hardware Port)がわかれば、 networksetup
コマンドで更に色々(例えば強制的に接続を切断するなど)できます。
ディスカッション
コメント一覧
まだ、コメントがありません