연결되지 않은 네트워크 인터페이스를 표시하는 터미널 명령

연결되지 않은 네트워크 인터페이스를 표시하는 터미널 명령
  • 터미널 모드를 사용하여 내 컴퓨터에 현재 연결되지 않은 네트워크 인터페이스를 표시하고 싶습니다.

  • 연결된 인터페이스와 해당 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 드라이버가 연결된 모든 인터페이스를 보고하도록 합니다. 두 번째 부분에서는 "연결되지 않음"이 큰 의미가 없기 때문에 모든 가상 인터페이스를 삭제합니다.

답변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

관련 정보