web-dev-qa-db-ja.com

接続されていないネットワークインターフェイスを表示するターミナルコマンド

  • ターミナルモードを使用して、コンピューターに接続されていない現在のネットワークインターフェイスを表示します。

  • 私はifconfigを使用して、接続されているインターフェースとそのIPアドレスを見つけましたが、接続されていないインターフェースだけを表示する方法がわかりません。

2
nismoasfuh

あなたはただ行うことができます:

$ ip link show

ステータスを含むインターフェースのリスト。 ipコマンドの後にgrep DOWNをパイプすることで、使用されていないデバイスの結果をフィルタリングできます。

$ ip link show | grep DOWN
3
Alxs
ip link show |
awk '/^[1-9]/ && $0 !~ "LOWER_UP" { inf=$2; sub(":","",inf); print inf; }' |
while read iface; do
    [[ $(readlink /sys/class/net/$iface) =~ devices/virtual ]] || echo $iface
done

最初の部分 (ip link show | awk)L2ドライバーが接続されていると報告するすべてのインターフェースを取得します。 2番目の部分では、「接続されていない」ことはあまり意味がないため、すべての仮想インターフェイスを破棄します。

2
Hauke Laging

ifconfig(使用方法がわかっているというコマンドなので)とbashdiffsedで使用する:

_diff <( ifconfig ) <( ifconfig -a ) | sed -nE 's/^> ([^[:blank:]]+).*/\1/p'
_

これにより、ifconfigの出力と_ifconfig -a_の出力が比較されます。その出力から、_>_で始まる行(_ifconfig -a_出力にのみ存在することを示す)は、「UP」ではないインターフェースに関連しています。 sed式は、インターフェース名を解析します。

結果は、稼働していないインターフェースのリストになります。


seds/^> ([^[:blank:]]+).*/\1/p

これは代用です。これは、_>_で始まり、その後にスペースが続くすべての行に一致します。その後、空白以外の文字列をキャプチャします。これが残りの行とともに、キャプチャされた空白以外の文字列に置き換えられ、結果が出力されます。 diffからの出力の正規表現に一致する行は、_>_とスペースの後ろの行の先頭にあるインターフェース名を示す行だけです。

1
Kusalananda

/sys/class/net/$interface/carrierファイルからネットワークインターフェイスの状態を確認できます。 (1 =接続済み、0 =切断済み)

切断されたネットワークインターフェイスを取得するには:

for i in $( ls /sys/class/net );do 
    if grep -q 0 /sys/class/net/$i/carrier; then
        echo $i; 
    fi
done
1
GAD3R