ターミナルモードを使用して、自分のコンピュータに現在接続されていないネットワークインターフェイスを表示したいと思います。
接続されたインターフェイスとその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
使用してください。diff
sed
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