Mac OS X “hosts” dosyasına başka dosyalar ekleyebilir miyim?


10

Sık kullandığım farklı ağlara erişirken, ağ ayarlarımı, ana bilgisayar dosya içeriklerimi ve / etc / resolver dosyalarımı yapılandırmak için bazı otomasyon komut dosyaları üzerinde çalışıyorum.

Tüm hosts dosyasında değişiklik gerektirebilecek bazı kombinasyonlar vardır ve paylaşılan kombinasyonları her yerde çoğaltarak, farklı kombinasyonlardan oluşan bir matris ayarlamak zorunda kalmamak istiyorum.

Mesela ben olabilir üzerinde yani iş ağı. veya VPN üzerinden erişebilirim. Her iki durumda da, ağın düzgün çalışması için hosts dosyasına bazı ayarlar eklemem gerekiyor, bazıları paylaşılıyor, bazıları paylaşılmıyor. Ayrıca, VPN üzerindeysem evde olabilirim, bu durumda hosts dosyasında eklemek istediğim başka ayarlar da var .

Bu nedenle, "home için bir dosya oluşturmak yerine, VPN üzerinden çalışmaya" veya "home'a, işe erişmemek" vb. Yerine başka dosyalar eklememin bir yolu olduğunu umuyordum.

Örneğin, aşağıdaki varsayımsal sözdiziminin işe yaradığını varsayalım:

#!include home.hosts
#!include work.hosts

127.0.0.1 localhost
::1 localhost

Bu şekilde, bu iki ekstra dosyanın birini veya her ikisini birden temizleyebilir ve gerisini bırakabilirim.

Ya da, bunu engellemek, bunu yapmanın sadece bu gibi dosyaları yeni bir ana bilgisayar dosyasına birleştiren küçük bir komut dosyası oluşturmaktan daha iyi bir yol var ve otomasyon kurulumumun bir parçası olarak, önce bu ekstra dosyaların bazılarını temizledim, ve sonra ben bu ekstra dosyalardan tek hosts dosyasını yeniden oluşturmak için komut dosyasını çağırmak?


Örneğin, ana bilgisayar girişlerini dscldoğrudan değiştirmek yerine ana bilgisayar dosyasında değişiklik yapılmasını istediğinizden emin misiniz ?
Daniel Beck

dsclKomutun farkında değildim, bu konuda da araştırma yapmam gerekecek.
Lasse V. Karlsen

Örneğin buraya bakınız . Dahili olarak, OS X kullanmakta kontrol edebilirsiniz dizin hizmetlerini kullanan dsclkendisi için, /etc/hostssadece mevcut veri kaynaklarından biridir hostname / IP adresi eşleştirmeleri (ders arasında) sağlanması. dsclÖnbelleğe yazan ve önbelleği temizleyen bir komut dosyası oluşturmak , durumunuzda anasistemler dosyasının birden çok kopyasını saklamaktan veya her zaman yeniden yazmaktan daha iyi sonuç verebilir.
Daniel Beck

@DanielBeck: İyi nokta! Ben dscl tüm yeteneklerinin farkında değildi.
Karolos

Bu şekilde yapmayı denemek istiyorsanız, nasıl çalıştığını bana bildirin. Kendim denemedim, bu yüzden cevap olarak göndermiyorum. İyi şanslar!
Daniel Beck

Yanıtlar:


7

Herhangi bir içerme olasılığının farkında değilim. Ancak ne yapacağım, benim hosts dosyasında bölümler yapmak ve daha sonra, örneğin sed kullanarak her bölümdeki satırları yorumlamak için bir komut dosyası kullanmaktır.

Bu şekilde dosyanız

#%%%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

Düzenleme: Alanları değiştirmek için çabucak ekleme.

HOME.HOSTS için yorum kaldırılıyor

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts

HOME.HOSTS için yorumları geri koyma

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts

Bu temel bir sürümdür ve ihtiyaçlarınıza göre ayarlanması gerekir.


Merhaba Karolos, komut hakkında daha fazla bilgi verebilir misiniz: sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hostsve hosts dosyasındaki bölüm hakkında. Nedenini gerçekten anlamıyorum :(
Toan Nguyen

@NNToan: Satırda sediki # %%% satırı arasındaki satırların başına bir # eklemeniz veya kaldırmanız söylenir . Bu satırları yorumlar veya yorumlar. Örnekte # %%% HOME.HOSTS kullanılarak HOME.HOSTS bölümüne nasıl yorum yapılacağı gösterilmektedir; sed komutunda # %%% WORK.HOSTS yerine WORK.HOSTS bölümünü yorumlamak veya yorumunu kaldırmak için kullanmalısınız.
Karolos

0

Dscl artık OpenDirectoryService'e geçiş nedeniyle çalışmadığından, seçeneklerden biri hayalet kullanmaktır:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

... bu bölümü / etc / hosts dizinine ekleyecektir:

# ghost start
10.0.0.1 fw.start.se
# ghost end

Hosts dosyasının #ghost bölümünü temizlemek için (bu, host listesini yenisiyle değiştirmeyi kolaylaştırır):

sudo ghost empty

Hayalet hakkında daha fazla bilgiyi burada bulabilirsiniz: https://github.com/bjeanes/ghost


0

Hosts dosyasındaki farklı LAN / WAN ayarlarını kullanarak üç farklı yerdeki hizmetlere erişmem gerektiğinde benzer bir kullanım durumum vardı. Karolos'un yukarıdaki cevabı olası bir çözümdür. Yaklaşımım burada.

1- http://apple.stackexchange.com/q/139267/74657 adresine bakın

2- Her konum için oluşturulan ana bilgisayar dosyaları (hosts.work, hosts.home, hosts.vendor)

3- Soloz'un komut dosyasını kullanarak ( https://github.com/slozo/Network-listener ) Ev ağına her bağlandığımda, hosts dosyasını değiştirmek için basit bir komut dosyası çalıştırıyorum.

en basit yöntem

mv hosts.home /etc/hosts

alternatif olarak, yukarıda belirtilen soloz komut dosyasını kullanarak kolayca algılayabileceğiniz ve çalıştırabileceğiniz belirli SSID'ye bağlanırken mevcut dosyayı güncellemek için sed kullanarak Karolos'un yanıtını otomatikleştirebilirsiniz.

umarım bu konuda tökezleyen herkese yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.