네트워크 장치에 대한 데이터만 다음 순서로 표시할 수 있나요?
장치 이름 - 유형(vlan, bond 등) - IP 주소
NetworkManager는 "nmcli device status" 명령을 사용하여 유사한 작업을 수행합니다.
답변1
ip -details
인터페이스 등 추가 정보 제공유형(아래 참조).
진정한 구문 분석성을 위해서는 JSON 출력과 JSON 구문 분석기를 선택하세요.jq
.
이것은 한 줄의 코드이지만 읽기 쉽도록 여러 줄로 나누기로 결정했습니다. 필요jq
대부분의 배포판에 패키지되어야 하는 구문 분석된 출력용 유틸리티입니다 ip -json
.잭제가 제공한 링크만 읽어보세요. 배우는 언어는 어렵지 않습니다.
ip -details -json address show |
jq -j '
.[] |
.ifname," ",
.link_type,"/",
.linkinfo.info_kind // "",
if .linkinfo.info_slave_kind then
"/slave-",.linkinfo.info_slave_kind
else
empty
end, " ",
( .addr_info[] | ( .local," " ) ),
"\n"
'
인터페이스 유형과 관련하여 실제로는 두 가지 직접 속성(type 및 kind)과 세 번째 속성(slave_kind)이 있습니다. 이 속성은 JSON 출력에서만 두 번째 속성과 쉽게 구별할 수 있습니다.
유형
일반적으로
loopback
(루프백 인터페이스에만 적용),ether
(대부분의 인터페이스는 이더넷 또는 이더넷과 유사한 인터페이스) 또는none
레이어 3 인터페이스에 적용됩니다(예:라인배커상호 작용).유형
이것이 일반적으로 유형으로 간주되는 것입니다. 이것루프백인터페이스와 실제 하드웨어 인터페이스(적어도 일반적인 이더넷이나 무선 인터페이스)는 그렇지 않습니다.유형재산.
노예 계급
인터페이스가 브리지 또는 연결된 장치에 연결되는 등 슬레이브되는 경우 이 정보는 명령 출력에서 사용할 수 있습니다.
유형 + 종류 + 하위 종류가 결합된 결과를 얻게 됩니다(모두 필요하지 않은 경우 해당 행을 삭제하면 됩니다).
따라서 약간의 미묘함을 위해 콤보는 ether/tun
탭 모드에서 tuntap 장치가 되고 a는 none/tun
tun 모드에서 tuntap 장치가 됩니다(이 정보는 일부 하위 필드에서도 직접 사용할 수 있지만 유형+콤보 종류의 경우 불필요합니다).
보여주다오직IPv4 주소가 있는 인터페이스를 하나 이상 갖는 가장 쉬운 방법은 이 옵션을 -4
다른 옵션과 함께 ip address
위 명령에 추가하는 것입니다. 이렇게 하면 링크 계층 주소도 제거되므로 필터는 IPv4 주소가 없는 인터페이스와 일치하지 않으며 전혀 표시되지 않습니다.
IPv6 출력을 제거하지만 표시모두인터페이스, 추가하지 말고 -4
교체하세요:
( .addr_info[] | ( .local," " ) ),
그리고
( .addr_info[] | ( if .family == "inet" then .local," " else empty end ) ),
답변2
사용 nmcli
:
nmcli device show |grep 'GENERAL.DEVICE:\|GENERAL.TYPE:\|IP4.ADDRESS'
IPv6 포함:
nmcli device show |grep 'GENERAL.DEVICE:\|GENERAL.TYPE:\|IP4.ADDRESS\|IP6.ADDRESS'