bash를 사용하여 /etc/export에 규칙이 포함되어 있는지 확인하세요.

bash를 사용하여 /etc/export에 규칙이 포함되어 있는지 확인하세요.

bash를 사용하여 /etc/export를 수정하는 실제 예는 무엇입니까?

예:

다음 규칙이 존재하고 유효한지 확인하고 싶습니다.

/export/home 2400:123::/32(rw,no_root_squash)

그것은 다음과 같아야 합니다:

  1. 아직 존재하지 않는 경우에만 추가하십시오(어떤 형태로든).
  2. 섹션이 존재하는 경우 기존 항목을 업데이트해야 합니다(예: 옵션 업데이트).

기존 파일에서 가능한 구문:

  • 다양한 공간과 다양한 옵션

    /export/home 2400:123::/32(rw,no_root_squash,no_subtree_check)

  • 같은 줄에 여러 개 허용

    /export/home 2400:123::/32(rw,no_root_squash,no_subtree_check) 2400:321::/32(rw,no_root_squash,no_subtree_check)

위의 조합 외에도.

처음에는 이를 달성하기 위해 augeas를 사용하고 싶었지만 /etc/exports 파일의 IPv6 주소에 오류가 있었습니다.

/etc/exports 파일은 스크립트를 중단하지 않고 독립적인 수정을 허용해야 합니다(이렇게 하면 문제의 규칙만 올바르고 유효한지 확인하고 나머지는 그대로 유지해야 함).

답변1

Augeas와 Puppet을 사용할 수 없다면 다음과 같이 하십시오:

if grep -qF '^/export/home' /etc/exports;then
    sed -i \
    's@^/export/home.*$@/export/home 2400:123::/32(rw,no_root_squash)@'\
    /etc/exports
else
    echo '/export/home 2400:123::/32(rw,no_root_squash)' >> /etc/exports
fi

하지만 주의하세요. 이는 모든 내보내기 규칙이 /export/home사용자가 제공한 정의로 대체될 수 있다고 가정합니다.

답변2

Augeas의 /etc/exports 렌즈가 트렁크의 IPv6에 대해 수정되었으며 수동으로 가져올 수 있음을 발견했습니다.

https://github.com/hercules-team/augeas/blob/master/lenses/exports.aug

이 파일을 배치하여 /usr/share/augeas/lenses/기본 렌즈에 나타나도록 하세요.

관련 정보