Ana bilgisayar adını alan adıyla birlikte nasıl alabilirim?


18

Unix'te (Solaris) ana bilgisayar adını ve etki alanı adını birlikte döndüren bir komut var mı?

Örneğin:

hostname -> servername
domainname -> us.xyz.com

İhtiyacım var : servername.us.xyz.com


2
Çalışmıyor mu printf "%s" "$(hostname) $(domainname)"?
jasonwryan

Umarım yeterli olacak "hostname -f" kullanmaya çalışın
abhishek kumar srivastava

Yanıtlar:


14

Alan adınız resolv.conf dosyasında doğru ayarlanmışsa, bu işe yarar. NIS etki alanı adınız DNS etki alanınızla aynıysa, diğerlerinin belirttiği etki alanı adı komutunu da kullanabilirsiniz.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`

13

Komuta

hostname --fqdn (or -f)

sistemimde (none)çalıştırdığımda aldığımdan beri istediğini yapabilir ya da yapmayabilirsindomainname


8
İçin man sayfasına göre hostname(1)(sun4v üzerine) Solaris 10 üzerinde ve ben kullandım her eski sürümü, --fqdnkullanılamaz. Sadece ana bilgisayar adını ayarlamaya çalışır --fqdn. Güvenlik için süper kullanıcı olmayan olarak çalıştırırsanız, 'uname: ayar adında hata: Sahip değil' yazıyor. Bu tabii ki hisse senedi Solaris hostname. Poster, GNU araç setinin yüklü olup olmadığını göstermez.
Alexios

5

Bu da yıllardır beni rahatsız ediyor. Ben sadece etrafında söyleyerek çalışıyorum

$(hostname).$(domainname)

Bir kabuk işlevi veya diğer ad tanımlayabilirsiniz:

fqdn () {
    echo $(hostname).$(domainname)
}

4
domainnnameNIS kullanıyorsanız aslında NIS alanınızı bildirir. Bu mutlaka DNS alan adınızla aynı değildir.
Macellan

Hayır, değil. Ama Sarı Sayfalar olduğu için NIS'den kaçmayı / kaçmayı başardığım için bunu hiç bilmiyordum. :) Yani olan NIS biri farklı ise alan adı almak için güvenilir bir yol var?
Alexios,

NIS'den kaçındığınız için mübarek olmalısınız. Bu sinir bozucu. Ve Mozilla Thunderbird ekibi bile, 2.0'daki varsayılan yanıt için 'alan adı' çıktısına bağlı olduklarından bunu bir araya getirdi. Gerçek alan adı için şunu kullanıyorumhostname --fqdn | cut -d. -f2-4
Magellan

1
Bu Linux üzerinde iyi çalışır. Solaris'te en az 10'a kadar , ana bilgisayar adını '--fqdn' olarak hostname --fqdn ayarlar ; bu muhtemelen kötü bir fikirdir (bu nedenle denerseniz kök olmadığınızdan emin olun). :) --fqdnSolaris 11'de destekleniyor mu?
Alexios

1
Oy! Yanlışlıkla ana bilgisayar adını ayarlamak bir acı olur ve OP Solaris dedi. Teşekkürler!
Macellan

4

check-hostname | awk '{print $ NF}'


2
Lütfen uzman olmayanlar için biraz açıklayınız.
vonbrand

Özet / usr / sbin / check-hostname Açıklama Check-hostname betiği sendmail (1M) için bir geçiş yardımcısıdır. Bu komut dosyası, yerel ana bilgisayarın tam nitelikli ana bilgisayar adını (FQHN), sendmail'e (1M) benzer bir şekilde belirlemeye çalışır. Check-hostname yerel ana bilgisayarın FQHN'sini belirleyebiliyorsa, başarılı olduğunu bildirir. Aksi takdirde, check-hostname, sistemin FQHN'nin düzgün bir şekilde belirlenebilmesi için nasıl yeniden yapılandırılacağını bildirir.
ealgumtarafından

/ usr / sbin / check-hostname tanımlanmışsa Solaris sistemlerinde FQDN'yi bildirir. Çıktının awk'ye bağlanması ve print $ NF kullanılması, FQDN olan check-hostname'den son çıktı alanını bildirir. Bu, tam bir etki alanı adınız olduğunu varsayarak, bu bilgileri komut satırından almanın en doğrudan yöntemidir. Değilse, bu işe yaramaz, ancak bu durumda hostname sahip olduğunuz gibi bunu gösterme gereğini hissetmedim. Solaris kullanmıyorsanız, bu da çalışmaz, ancak sorgu Solaris için yönlendirilmiştir.
ealgumtarafından

Cidden, bunun soruyu nasıl cevaplamadığını anlamıyorum: "Unix'te (Solaris) ana bilgisayar adını ve etki alanı adını birlikte döndüren bir komut var mı?" Cevap "evet" dir ve bu komut şudur: check-hostname | awk '{print $ NF}'
ealgumtarafından

3
Gerçek cevap yorumlarınızda. Çok az (veya sizin durumunuzda, hiçbiri) açıklama ile tek satırlık bir komut vermek, bu web sitesinin hakkında bir cevap değildir.
rahmu

2

Bu eski bir iş parçacığı olduğunu biliyorum ama ayrı bir komut dosyası içinde ana bilgisayar adı ve etki alanı adı çekme ihtiyacı vardı.

ealgumby'nin check-hostname kullanma yanıtı daha önce hiç görmediğim bir şeydi, bu yüzden ihtiyaçlarım için büyük bir başarıya çalıştım. Ben yararlı olarak işaretlemek ama görünüşe göre bunu yapmak için temsilcisi yok.

Etki alanını aşağıdaki gibi kontrol-ana bilgisayar adının çıktısında döngü yaparak ayarladım.

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}

1

Ben biraz geçici çözüm yaptık hostnameve host:

$ host $(hostname -i) | awk '{print $NF }'

(Centos kullanıyorum ama başka bir yerde çalışmalı)

Alanın sondaki nokta olmadan alınması:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'

ubuntu'mda, hostname -iana bilgisayar adına karşılık gelen IP adresini yazdırın.
Archemar

Evet bu doğru, bu yüzden bu IP'yi host komuta iletiyorum. Bu size böyle bir şey alacak: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. awk ile son sütun olanhostname.domainname
user1314742

Ne yazık ki kullanarak host $(hostname -i)bana aynı IP ile 8 ana bilgisayar adı ve ana bilgisayarlara karşılık gelen hiçbir ana bilgisayar adı vermek
Archemar

hostkomut için takma adınız olmadığından emin misiniz ? sizin komut görünüyor hostiçin bir takma ad vardırhost -a
user1314742

0

Solaris'te bu benim için iyi çalıştı: backtick için üzgünüm, bir qwerty klavyesinde 1 numarasının yanındaki ters alıntı veya KSH'de $ (komut) kullanabilirsiniz

getent hosts (backtick) /usr/bin/hostname (backtick)

veya

getent hosts $(/usr/bin/hostname)

misal:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getent, geçerli ad arama mekanizmasını /etc/nsswitch.conf dosyasında belirtildiği şekilde sorgular ve arama ile eşleşen bilgileri döndürür, burada bulunan bilgileri döndürür /etc/hosts. içinde olmayan başka bir ana makine için ana bilgisayar bilgisini ararsanız /etc/hosts,/etc/nsswitch.conf


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.