Testowałem hostname
na kilku serwerach (RedHat, Ubuntu) i hostname -f
okazałem się niewiarygodny, zwracając kiedyś tylko krótką nazwę (jak opisano w tym pytaniu ).
Widzę fqn w aliasach: hostname -a
(jednym z aliasów jest fqn, którego szukam), ale kolejność aliasów nie jest ustalona.
Czy istnieje inny sposób niezawodnego uzyskania w pełni kwalifikowanej nazwy i zapisania jej w zmiennej bash?
Odpowiedzi:
Próbowałem tego na CentOS5:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Muszę przesłać zapytanie do mojego DNS w trybie TCP. Jeśli UDP działa w twoim środowisku, pozostaw opcję „T”.
Uwaga: w przypadku gościa Ubuntu (VirtualBox) nie będzie działać:
Aby objąć wszystkie przypadki:
źródło
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
pracę na moich serwerach RedHatOto jeden ze sposobów, w jaki znalazłem fqn:
Innymi słowy, miałem
nslookup
adres IP, który daje mi coś takiego:Stamtąd chodziło tylko o usunięcie tego, czego nie chciałem, poprzez manipulacje sznurkiem .
Może istnieje prostszy sposób?
źródło
Twoja metoda działa tylko wtedy, gdy poprawnie skonfigurowałeś nazwę hosta i masz prawidłowe ustawienia dns itp. Jeśli masz to wszystko, to już znasz swój fqdn.
Nie ma niezawodnego sposobu na uzyskanie fqdn. Pojedynczy adres IP może mieć kilka FQDN, a jeden FQDN może mieć kilka adresów IP ... a wiele adresów IP w ogóle nie ma FQDN.
Jeśli twoje urządzenie jest bezpośrednio podłączone do Internetu, po prostu użyj adresu IP i prześlij żądanie DNS w odwrotnym kierunku:
host 1.2.3.4
Ale to bardzo często nie daje pożądanej odpowiedzi (po prostu spróbuj na przykład w Google).
źródło
host
aby uzyskać tylko rekord A (lub wykonaj odpowiednie wyszukiwanie).Nie
hostname --fqdn
działa dla ciebie?źródło
hostname --fqdn
zwraca krótką nazwę, przy czym fqdn jest zdefiniowany jako jeden z aliasów nazw hostów.-f
i--fqdn
są tym samym.W Ubuntu możesz to zrobić
hostname -A
źródło
Dla alternatywy dla wielu platform, jeśli nie masz nic przeciwko użyciu Pythona (działa przynajmniej w Pythonie 2.7 i Pythonie 3)
źródło
Metoda tylko bezpiecznego basha w OS X, która prawdopodobnie nie zadziała z innymi wariantami * nix ze względu na różnice w danych wyjściowych poleceń:
Python jest prawdopodobnie najlepszym wyborem dla szerokiej kompatybilności.
źródło