イーサネットケーブルが接続されていることをプログラムで確認するには?

イーサネットケーブルが接続されていることをプログラムで確認するには?

私たち全員が知っているように、Windowsではネットワークケーブルを接続するとネットワークシンボルが別の状態に変わります。

Linuxでコマンドプロンプトを介してケーブルが接続されていることを確認する方法は?

ベストアンサー1

私が見た主な2つの方法はusingethtoolまたはmanual parsingです/sys

イーサネットツール

たとえば、インターフェイスがある場合は、「リンク検出済み」行をeth0使用してクエリを実行してethtool解析できます。

はい
$ sudo ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000001 (1)
    Link detected: yes

具体的には、次のコマンドは次のようになります。

$ ethtool eth0 | grep "Link"
Link detected: yes

下に下がると「いいえ」と表示されます。

/sysの使用

もう一度興味があると仮定すると、eth0手動で解析できます。/sys/class/net/それからeth0あなたのデバイスについて。このディレクトリには、リンクが有効になっているかどうかを示す2つのファイルがありますcarrieroperstate

ワイヤが接続されると、2つのファイルは次のようになります。

$ cat /sys/class/net/eth0/{carrier,operstate}
1
up

回線接続が失われると、両方のファイルが次のように表示されます。

$ cat /sys/class/net/eth0/{carrier,operstate}
0
down

引用する

おすすめ記事