자주 사용하는 다른 네트워크에 액세스할 때 네트워크 설정, 호스트 파일 내용 및 /etc/resolver 파일을 구성하기 위해 일부 자동화 스크립트를 작업 중입니다.
호스트 파일을 변경해야 하는 몇 가지 조합이 발생할 수 있으며 공유 설정을 여기저기에 복제하여 다양한 조합의 매트릭스를 설정하지 않아도 되기를 바랍니다.
예를 들어, 나는 아마도~에직장 네트워크, 즉. 건물에 있거나 VPN을 통해 액세스할 수도 있습니다. 두 경우 모두 네트워킹이 제대로 작동하려면 호스트 파일에 일부 설정을 추가해야 합니다. 일부는 공유되고 일부는 공유되지 않습니다. 또한 VPN을 사용하는 경우 집에 있을 수 있으며, 이 경우 호스트 파일에 몇 가지 다른 설정이 있습니다.또한추가하고 싶습니다.
따라서 "집, VPN을 통해 회사에 액세스" 대 "집, 회사에 액세스하지 않음" 등에 대해 하나의 파일을 만드는 대신 다른 파일을 포함할 수 있는 방법이 있기를 바랐습니다.
예를 들어, 다음과 같은 가상 구문이 작동한다고 가정해 보겠습니다.
#!include home.hosts
#!include work.hosts
127.0.0.1 localhost
::1 localhost
이렇게 하면 두 개의 추가 파일 중 하나 또는 둘 모두의 내용을 지우고 나머지는 그대로 둘 수 있습니다.
또는 이를 제외하고 이러한 파일을 새 호스트 파일에 연결하는 작은 스크립트를 작성하고 자동화 설정의 일부로 먼저 추가 파일 중 일부를 지우는 것보다 더 좋은 방법이 있습니까? 그런 다음 해당 추가 파일에서 단일 호스트 파일을 다시 작성하는 스크립트를 호출합니까?
답변1
나는 포함 가능성을 알지 못합니다. 그러나 내가 할 일은 호스트 파일에 섹션을 만든 다음 스크립트를 사용하여 sed 등을 사용하여 각 섹션의 행에 주석을 달는 것입니다.
이렇게 하면 파일이 다음과 같이 보일 것입니다.
#%%%HOME.HOSTS%%%
#Put here the contents of home.hosts
#%%%WORK.HOSTS%%%
#Put here the contents of work.hosts
#%%%ALWAYS_ON%%%
127.0.0.1 localhost
::1 localhost
편집하다:필드를 수정하려는 빠른 시도를 추가합니다.
HOME.HOSTS에 대한 설명 제거
sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts
HOME.HOSTS에 대한 설명 다시 넣기
sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts
이것은 기본 버전이므로 필요에 맞게 조정해야 합니다.
답변2
OpenDirectoryService로의 전환으로 인해 dscl이 더 이상 작동하지 않으므로 한 가지 옵션은 ghost를 사용하는 것입니다.
sudo gem install ghost
sudo ghost add fw.test.se 10.0.0.1
...이 섹션을 /etc/hosts에 추가합니다:
# ghost start
10.0.0.1 fw.start.se
# ghost end
호스트 파일 사용의 #ghost 섹션을 지우려면(이렇게 하면 호스트 목록을 새 목록으로 쉽게 바꿀 수 있습니다):
sudo ghost empty
여기에서 유령에 대한 자세한 정보를 찾을 수 있습니다. https://github.com/bjeanes/ghost
답변3
호스트 파일의 서로 다른 LAN/WAN 설정을 사용하여 세 곳의 서로 다른 위치에 있는 서비스에 액세스해야 할 때도 비슷한 사용 사례가 있었습니다. 위의 Karolos의 답변은 가능한 해결책 중 하나입니다. 내 접근 방식은 여기에 있습니다.
1- 참조http://apple.stackexchange.com/q/139267/74657
2- 각 위치에 대한 호스트 파일 생성(hosts.work, 호스트.홈, 호스트.벤더)
3- soloz의 스크립트를 사용하여 여기(https://github.com/slozo/Network-listener) 홈 네트워크에 연결할 때마다 간단한 스크립트를 실행하여 호스트 파일을 전환합니다.
가장 간단한 방법은
mv hosts.home /etc/hosts
또는 위에서 언급한 soloz의 스크립트를 사용하여 쉽게 감지하고 실행할 수 있는 특정 SSID에 연결할 때 기존 파일을 업데이트하기 위해 sed를 사용하여 위의 Karolos의 답변을 자동화할 수 있습니다.
주제 문제에 걸려 넘어지는 사람에게 도움이되기를 바랍니다.