Basit hostname
komut çağrısının aksine, çağırma hostname --fqdn
birkaç ş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ı --verbose
seçeneğe dikkat edin.
Kısacası, basit dışında herhangi bir şey hostname
muhtemelen 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 --fqdn
yerine kullanıyor .
Hata iletisi çözümleyici işlevlerinden hostname: Name or service not known
gelir : 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.conf
ve 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 dns
bu 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.