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.