터미널 모드를 사용하여 내 컴퓨터에 현재 연결되지 않은 네트워크 인터페이스를 표시하고 싶습니다.
연결된 인터페이스와 해당 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
사용 하십시오 .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