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

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

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

答え1

次のことができます。

$ ip link show

インターフェイスのリストを取得します(該当するステータスを含む)。次のコマンドgrep DOWNの後にパイプを接続して、未使用のデバイスの結果をフィルタリングできますip

$ ip link show | grep DOWN

答え2

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番目の部分では、「接続されていません」は大きな意味がないため、すべての仮想インターフェイスを削除します。

答え3

ifconfig(これは使用方法がわかっていると言うコマンドなので)、そして以下をbash使用してください。diffsed

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

これは、出力と出力をifconfig比較しますifconfig -a。その出力から>(出力にのみあることを意味します)でifconfig -a始まるすべての行は、「UP」ではなくインタフェースに関連付けられます。このsed式はインターフェイス名で解決されます。

結果は機能しないインターフェイスのリストになります。


sed表現方式s/^> ([^[:blank:]]+).*/\1/p

これは代替案です。>スペースで始まるすべての行と一致します。その後、空白ではなく文字列をキャプチャします。その後、残りの行と一緒に空白以外の文字のキャプチャされた文字列に置き換えられ、結果が印刷されます。出力の正規表現と一致する唯一の行は、行の先頭とスペースの後にあるインターフェイス名を参照する行diffです。>

答え4

ファイルからネットワークインタフェースの状態を確認できます/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

関連情報