인터페이스의 이름, 유형 및 IP를 얻는 방법은 무엇입니까?

인터페이스의 이름, 유형 및 IP를 얻는 방법은 무엇입니까?

네트워크 장치에 대한 데이터만 다음 순서로 표시할 수 있나요?

장치 이름 - 유형(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/tuntun 모드에서 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' 

관련 정보