라벨 이름으로 IP 주소 별칭 제거

라벨 이름으로 IP 주소 별칭 제거

다음을 사용하여 만든 별칭을 삭제하고 싶습니다.

ip addr add 192.168.1.1 dev eth0 label eth0:100

IP 주소를 알 필요가 없습니다. 기본적으로 내가 하고 싶은 건

ip addr del dev eth0 label eth0.100

그 중에 따르면문서유효해야 하지만 다음을 제공합니다.

ip: RTNETLINK answers: Operation not supported

그 와중에 사용해 보니

ip addr del $(ip addr list label eth0:100 | awk '{ print $2 }') dev eth0 label eth0.100

답변1

다음 명령을 사용하여 네트워크 별칭을 삭제할 수 있습니다 ifconfig.

/sbin/ifconfig eth0:100 down

명령 매뉴얼에 따르면 ipIP 주소를 삭제하려면 장치 이름만 필요합니다. 나머지 매개변수는 선택사항입니다. 인수가 제공되지 않으면 첫 번째 IP 주소가 인터페이스에서 제거됩니다. 하지만 실제로는 이 동작을 재현할 수 없습니다.
IP 주소도 필요한 것 같습니다.

표시된 마지막 명령은 표현식이 ip addr list label eth0:100 | awk '{ print $2 }'네트워크 별칭의 IP 주소를 제공하고 해당 IP를 ip addr delete ...명령에 삽입하기 때문에 작동합니다.

답변2

당신이 가지고 있는 것이 가장 좋은 경로입니다(비록 나는 grepover 를 사용하겠지만 awk그것은 개인적인 선호입니다). 그 이유는 각 "태그"가 여러 주소를 가질 수 있기 때문입니다. 따라서 삭제할 주소를 지정해야 합니다.

# ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                                      [ CONFFLAG-LIST ]
       ip addr del IFADDR dev STRING
       ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
       ip addr {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
          [ broadcast ADDR ] [ anycast ADDR ]
          [ label STRING ] [ scope SCOPE-ID ]

ip addr del와 같은 매개변수의 구문을 참고하세요 . 매개변수는 아래에 정의되어 있으며 필수입니다(해당 내용 은 선택사항임). IP/서브넷 조합입니다. 그러므로 선택사항이 아닙니다.IFADDRSTRINGIFADDRPREFIX[]PREFIX


사용법에 대해 내가 의미하는 바는 grep다음과 같습니다.

ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100

그 이유는 매개변수의 위치가 변경되는 것을 방지하기 위함입니다. 출력의 필드 위치는 ip addr선택적 필드에 따라 변경될 수 있습니다. 이 부분은 바뀔 것 같지는 않지만 inet그건 내 취향일 뿐이다.

답변3

ip명령에는 -o구문 분석에 적합한 출력을 생성하는 플래그가 있습니다. 예를 들어:

# ip -o addr show label wlp2s0:1|awk '{print $4}'
172.16.127.5/24

명령 대체로 포장하는 것으로 충분합니다 $(...). 다음이 있습니다.

# ip addr del $(ip -o addr show label wlp2s0:1|awk '{print $4}') dev wlp2s0

동일한 주제에 대한 변형이지만 다음을 사용합니다 xargs.

# ip -o a show label wlp2s0:1|awk '{print $4}'|xargs -I% ip a del % dev wlp2s0

더 짧은 명령 addr으로 대체할 수 있습니다.a

참고 사항:

명령 의 경우 ip이는 2011 매뉴얼 페이지의 필수 구문입니다.IP 주소(8)

ip address del IFADDR dev IFNAME

따라서 접두사가 붙은 주소가 따라와야 하며 del필수 dev IFNAME입니다.

관련 정보