ターミナルモードを使用して、コンピューターに接続されていない現在のネットワークインターフェイスを表示します。
私はifconfig
を使用して、接続されているインターフェースとそのIPアドレスを見つけましたが、接続されていないインターフェースだけを表示する方法がわかりません。
あなたはただ行うことができます:
$ ip link show
ステータスを含むインターフェースのリスト。 ip
コマンドの後にgrep DOWN
をパイプすることで、使用されていないデバイスの結果をフィルタリングできます。
$ ip link show | grep DOWN
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番目の部分では、「接続されていない」ことはあまり意味がないため、すべての仮想インターフェイスを破棄します。
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
からの出力の正規表現に一致する行は、_>
_とスペースの後ろの行の先頭にあるインターフェース名を示す行だけです。
/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