Docker 네트워크에서 발견된 IPv4 주소를 나열하는 정규식을 작성하십시오.

Docker 네트워크에서 발견된 IPv4 주소를 나열하는 정규식을 작성하십시오.

안녕하세요, docker 네트워크의 특성을 확인하기 위해 명령을 사용하는 동안 docker network inspect network59ipv4 주소가 있음을 발견하고 해당 명령의 결과에서 특별히 발견된 IPv4 주소를 나열하는 정규식을 작성하고 싶었습니다.

도움을 주셔서 미리 감사드립니다.

답변1

정규식에 대해서는 확실하지 않지만 jq도움이 될 수 있습니다. 작은따옴표로 묶어 jsonpath를 전달할 수 있습니다.

다음 명령은 아래 표시된 json에 대해 작동하여 게이트웨이를 추출합니다.

$ docker network inspect bridge | jq -r '.[0].IPAM.Config[0].Gateway'
172.17.0.1
[
    {
        "Name": "bridge",
        "Id": "f6daefc7df41c4ddb9c1620b57986b9b65bb4c9afa939af2b6baa6ef7be0f23f",
        "Created": "2023-11-14T10:31:54.319592088Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1454"
        },
        "Labels": {}
    }
]

답변2

Perl 모듈에는 Regexp::Common4차 표기법의 IPv4 주소를 포함하여 많은 일반적인 항목과 일치할 수 있는 정규식 라이브러리가 있습니다.

docker... | perl -MRegexp::Common=net -lne 'print for m{$RE{net}{IPv4}}g'

유효한 IPv4 주소이므로 231.2.3.45내부적으로 검색됩니다 . v1231.2.3.456.7이 IP 주소에 일부 컨텍스트를 추가하는 것이 도움이 될 수 있습니다. 예를 들어, IP 주소 앞에 "또는 공백만, 뒤에는 "공백만 또는 공백 만 오게 하도록 제한할 수 있습니다 /.

docker... | perl -MRegexp::Common=net -lne '
   print for m{(?<=["\s])$RE{net}{IPv4}(?=["\s/])}g'

점으로 구분된 4진수 형식의 IPv4 주소와 유사한 값을 가진 JSON 문자열을 보고하려면 다음 안내를 따르세요.

docker... | jq -r '
  ..|strings|select(test("^\\d{1,3}(\\.\\d{1,3}){3}\\z"))'

Regexp::Common(허용되므로 엄격한 일치는 아닙니다 999.888.777.666).

관련 정보