Basit hostnamekomut çağrısının aksine, çağırma hostname --fqdnbirkaç şey daha yapmaya çalışır, bu da genellikle bazı DNS aramalarıyla sonuçlanır.
Aşağıdaki (başarılı) çağrıyı ele alalım (bu bir Red Hat kutusundan, ancak Ubuntu için aynı olması gerektiğini düşünürüm):
# hostname --fqdn --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
myserver.example.com
Çok yararlı --verboseseçeneğe dikkat edin.
Kısacası, basit dışında herhangi bir şey hostnamemuhtemelen beklediğinizden daha fazlasını yapıyor. İşte başka bir örnek:
# hostname --ip --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
10.1.2.3
Ve yuvarlamak için:
# hostname --verbose
gethostname()=`myserver.example.com'
myserver.example.com
Bir sistemin ana bilgisayar adının (gethostname tarafından döndürülen şekilde) bana yalnızca 'myserver' gibi nitelenmemiş bir ana bilgisayar adı olabileceğini unutmayın. Bu yüzden yüklemek istediğiniz programın hostname --fqdnyerine kullanıyor .
Hata iletisi çözümleyici işlevlerinden hostname: Name or service not knowngelir : bunlar sistem kitaplığının adlar ve adresler (genellikle DNS adları ve IP adresleri) arasında çeviri yapan parçalarıdır.
Aslında, çözümleyici sadece DNS'den fazlasını (ve sadece ana bilgisayar adları ile IP adresleri arasında çeviri yapmaktan daha fazlasını yapar); davranışı kısmen dosya tarafından yapılandırılır /etc/nsswitch.confve genellikle aşağıdakilere, genellikle bu sırayla danışır:
- 'hosts' (Linux'ta / etc / hosts anlamına gelir)
- (bazen) nscd (ad hizmeti önbelleğe alma arka plan programı)
- 'Dns'
(not, yukarıdaki nokta için dnsmasqd --- gibi bir önbellek DNS sunucunuz da olabilir, bu hala 'dns' mekanizması altındadır).
Kazmak , ev sahibi ve saygıdeğer nslookup gibi araçların bu sırayı takip etmediğini belirtmek gerekir; bunlar açıkça DNS sorgulama araçlarıdır. Bu, onlara güvenirseniz (örneğin bir komut dosyasında), normal istemci programlarının (sistem çözümleyicisini kullanan) ne olacağından farklı bir sonuç elde edebileceğiniz anlamına gelir. Bu nedenle, özellikle nscd çalışıyor gibi bir önbellek bileşeniniz varsa getent programını komut dosyalarında kullanın .
# getent hosts myserver.example.com
10.1.2.3 myserver.example.com
Dolayısıyla, buradaki önemli paket, a) kendi makineniz için bir girişle iyi yapılandırılmış / etc / host'larınız varsa ve b) /etc/nsswitch.conf'nuzun olağan yapılandırmaya sahip olması durumunda - hosts: files dnsbu sırayla, c) bile ortamınızda iyi yapılandırılmış DNS'niz yoksa, hostname --fqdnçalışmalıdır.
İyi yapılandırılmış bir DNS'de, sunucunuzun 'standart' adını veren bir 'ters' adresiniz ("PTR kaydı") olması beklenir ve bu adın da aranabilmesi gerekir (" "IPv4 için bir kayıt).
Kısa versiyon: ekle --verbose; sizi eksik olduğunuza işaret edecektir.
Umarım neler olup bittiğini anlamanıza yardımcı olur.