Jak uzyskać nazwę hosta wraz z nazwą domeny?


18

Czy w Unixie (Solaris) jest jakieś polecenie, które zwraca nazwę hosta i nazwę domeny razem?

Na przykład:

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

Potrzebuję : servername.us.xyz.com


2
Nie printf "%s" "$(hostname) $(domainname)"działa?
jasonwryan

spróbuj użyć „hostname -f”, co będzie wystarczające, mam nadzieję, że tak
abhishek kumar srivastava

Odpowiedzi:


14

Działa to, jeśli domena jest poprawnie ustawiona w resolv.conf. Możesz także użyć polecenia domainname, o którym wspominali inni, jeśli nazwa domeny NIS jest taka sama jak domena DNS.

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

13

Komenda

hostname --fqdn (or -f)

może również robić, co chcesz lub nie, ponieważ w moim systemie dostaję, (none)gdy uruchamiamdomainname


8
Według strony podręcznika hostname(1)systemu Solaris 10 (sun4v) i wszystkich starszych wersji, z których korzystałem, --fqdnnie jest on dostępny. Po prostu próbuje ustawić nazwę hosta na --fqdn. Jeśli uruchomisz go dla bezpieczeństwa jako nieużytkownik, pojawi się komunikat „uname: błąd w ustawianiu nazwy: Brak właściciela”. Jest to oczywiście zapas Solaris hostname. Plakat nie wskazuje, czy mają zainstalowany zestaw narzędzi GNU.
Alexios

5

Ten też mnie denerwuje od lat. Po prostu pracuję nad tym, mówiąc

$(hostname).$(domainname)

Możesz zdefiniować funkcję powłoki lub alias:

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

4
domainnnamefaktycznie zgłasza domenę NIS, jeśli korzystasz z NIS. To niekoniecznie jest takie samo jak nazwa domeny DNS.
Magellan

Nie, nie jest. Ale odkąd udało mi się uniknąć / uniknąć NIS, ponieważ były to Yellow Pages, nigdy tego nie wiedziałem. :) Więc czy istnieje niezawodny sposób na uzyskanie nazwy domeny, jeśli NIS jest inny?
Alexios

Powinieneś czuć się błogosławiony, że uniknąłeś NIS. To irytujące. I nawet zespół Mozilla Thunderbird zepsuł to, ponieważ zależało od wyjścia „nazwa domeny” dla domyślnej odpowiedzi w 2.0. Do rzeczywistej nazwy domeny używamhostname --fqdn | cut -d. -f2-4
Magellan

1
Działa to dobrze w systemie Linux. W systemie Solaris co najmniej do 10 hostname --fqdn ustawia nazwę hosta na „--fqdn”, co jest prawdopodobnie złym pomysłem (więc upewnij się, że nie jesteś rootem, jeśli spróbujesz). :) Jest --fqdnobsługiwany w systemie Solaris 11?
Alexios

1
O tak! Nieumyślne ustawienie nazwy hosta byłoby uciążliwe, a OP powiedział Solaris. Dzięki!
Magellan

4

sprawdź nazwę hosta | awk „{print $ NF}”


2
Wyjaśnij trochę osobom niebędącym ekspertami.
vonbrand,

Synopsis / usr / sbin / check-hostname Opis Skrypt check-hostname jest pomocą migracyjną dla sendmaila (1M). Ten skrypt próbuje określić w pełni kwalifikowaną nazwę hosta lokalnego (FQHN) w sposób podobny do sendmaila (1M). Jeśli check-hostname jest w stanie określić FQHN hosta lokalnego, zgłasza powodzenie. W przeciwnym razie check-hostname informuje, jak zmienić konfigurację systemu, aby FQHN mógł zostać poprawnie określony.
ealgumby

/ usr / sbin / check-hostname zgłosi nazwę FQDN, jeśli jest zdefiniowana, w systemach Solaris. Pipingowanie wyjścia do awk i użycie print $ NF po prostu zgłasza ostatnie pole wyjścia z check-hostname, którym jest FQDN. Jest to najbardziej bezpośrednia metoda, jaką znam, aby uzyskać te informacje z wiersza polecenia, przy założeniu, że masz w pełni kwalifikowaną nazwę domeny. Jeśli nie, to nie zadziała, ale nie czułem potrzeby, aby to pokazywać, ponieważ w tym przypadku wystarczy nazwa hosta. Jeśli nie używasz systemu Solaris, to też nie zadziała, ale zapytanie zostało skierowane do systemu Solaris.
ealgumby

Poważnie, nie rozumiem, jak to nie odpowiada na pytanie, które brzmiało: „Czy w Unixie (Solaris) jest jakieś polecenie, które zwraca nazwę hosta i nazwę domeny razem?” Odpowiedź brzmi „tak”, a polecenie brzmi: check-hostname | awk '{print $ NF}'
ealgumby

3
Prawdziwa odpowiedź znajduje się w twoich komentarzach. Udzielenie jednego wiersza polecenia z niewielkim (lub w twoim przypadku brakiem) wyjaśnieniem nie jest odpowiedzią na tę stronę.
rahmu

2

Wiem, że to starszy wątek, ale potrzebowałem osobno pobrać nazwę hosta i nazwę domeny w skrypcie.

Odpowiedź ealgumby na użycie nazwy hosta w kratkę była czymś, czego nigdy wcześniej nie widziałem, więc spróbowałem osiągnąć wielki sukces dla moich potrzeb. Oznaczę to jako pomocne, ale najwyraźniej nie mam do tego przedstawiciela.

Ustawiłem domenę w następujący sposób, zapętlając dane wyjściowe z check-hostname.

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

1

Ja robiłem trochę obejście hostnamei host:

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

(Używam Centos, ale powinno działać gdzie indziej)

Uzyskiwanie domeny bez kropki:

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

na moim ubuntu hostname -iwydrukuj adres IP odpowiadający nazwie hosta.
Archemar,

Tak, zgadza się, więc przekazuję ten adres IP do host polecenia. To da ci coś takiego: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. z awk dostaję ostatnią kolumnę, którą jesthostname.domainname
user1314742

Rozumiem, niestety użycie host $(hostname -i)daje mi listę 8 nazw hostów, wszystkie o tym samym adresie IP, i brak nazwy hosta odpowiadającej moim hostom
Archemar

czy jesteś pewien, że nie masz żadnych aliasów do hostdowodzenia? wygląda na to, że twoje polecenie hostma aliashost -a
user1314742

0

W Solarisie działało to dla mnie dobrze: przepraszam za backstick, to jest odwrócony cytat obok cyfry 1 na klawiaturze qwerty lub możesz użyć $ (polecenie) w KSH

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

lub

getent hosts $(/usr/bin/hostname)

przykład:

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

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

getent wysyła zapytanie do mechanizmu wyszukiwania bieżącej nazwy, jak określono w /etc/nsswitch.conf, i zwraca informacje pasujące do wyszukiwania, tutaj zwraca informacje takie, jak w /etc/hosts. jeśli szukasz informacji o hoście dla innego hosta, którego nie ma /etc/hosts, będzie szukał w DNS, pod warunkiem, że jest to zdefiniowane w/etc/nsswitch.conf


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.