사용자 별 호스트 파일 소규모 LAN의 컴퓨터간에 rsync를

/etc/hosts사용자별로 (예 : 파일) 호스트 별명을 정의하는 방법이 /home/user/.hosts있습니까?

저의 주요 목표는 소규모 LAN의 컴퓨터간에 rsync를 통해 호스트 별칭을 쉽게 공유하는 것입니다. 항상 안정적으로 연결되는 시스템이 없기 때문에 DNS 서버는 옵션이 아닙니다 (맞습니까?).

감사합니다.



답변

더 나은 솔루션은 Avahi 및 libnss-mdns를 설치 한 다음 HOSTNAME.local주소 를 사용 하는 것입니다.

이러한 이름은 사용자 별이 아니지만 LAN을 통해 모든 시스템에 대해 공통 이름을 갖는 목표를 해결합니다.


답변

요청한 내용을 정확하게 수행하는 방법 은 https://github.com/figiel/hosts 를 참조 하십시오 .

이 라이브러리는 LD_PRELOAD를 통해로드되며 gethostbyname () 및 프로그램이 DNS 확인에 사용하는 몇 가지 관련 함수를 재정의하는 작은 라이브러리입니다. 그것은 나를 위해 잘 작동합니다. 내가 찾은 유일한 경고는 Chrome 웹 브라우저는 기본 DNS 확인을 사용하지 않고 자체 DNS 클라이언트를 구현한다는 것입니다. 이 문제를 해결하려면 Chrome의 DNS 클라이언트비활성화 해야합니다 .


답변

리눅스 glibc 구현은 그렇게 할 수 없습니다.

그러나 가능한 nss 라이브러리로 확장 할 수 있습니다. nss_files 디렉토리에있는 libc의 관련 부분을 제거 할 수 있으므로 작성하기 쉽습니다.

http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2

예를 들어

그러나 이것은 다소 이상한 비표준 일입니다.


답변

대부분의 시간에 가동 할 시스템이 두 대인 경우 각 머신에 BIND를 세워서 DNS 서버로 만들 수 있습니다 . 개발자 / 커크 우드 /sheevaplug.jsp ).

BIND를 사용하여 항상 DNS에 서비스를 제공하십시오.


답변

이 페이지의 다른 답변에서 설명 하듯이 유사한 기능을 수행하는 방법이 있지만

아닙니다 /etc/hosts. GNU / 리눅스에서 권한이없는 사용자로 기본 이름 확인을 무시하는 “사용자 별”파일 이나 다른 방법 은 없습니다 .


답변

어느 호스트가 작동하는지 알아 낸 다음 다음 rsync 명령에 호스트 이름을 설정하는 스크립트를 작성하는 것이 훨씬 쉬워 보입니다. 이 같은

#! / usr / bin / sh

HOST = "없음"
TESTFILE = / tmp / testfile. $$
$ TESTFILE을 터치합니다
hosta hostb hostc olivia의 i의 경우
하다
    scp $ TESTFILE $ i : / tmp
    만약 [$? -eq 0]
    그때
        호스트 = $ i
    fi
끝난
rm $ TESTFILE

[$ HOST! = "none"] 인 경우
그때
    echo $ HOST가 가동 중입니다
    rsync -av --rsh = ssh 파일 $ HOST : / dest
그밖에
    echo "호스트를 찾을 수 없습니다"
    1 번 출구
fi

이것은 테스트되지 않았으며 가정이 있으므로 적합하도록 수정해야합니다.