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

strugee
źródło
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`
Mikołaj
źródło
13

Komenda

hostname --fqdn (or -f)

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

Elwillow
źródło
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)
}
Alexios
źródło
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}”

ealgumby
źródło
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}
ASG
źródło
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)}'
użytkownik1314742
źródło
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

Blaise
źródło
-2

W uniksowym skrypcie bash w Sun Solaris 10 właśnie wyświetlałem moją nazwę hosta przez:

echo „Moja nazwa hosta to $ (nazwa hosta)”

Sue Merritt Walker-Thornton
źródło
„wraz z nazwą domeny”
Michael Mrozek