Ich habe hostname
auf mehreren Servern (RedHat, Ubuntu) getestet und mich hostname -f
als unzuverlässig erwiesen. Manchmal habe ich nur den Kurznamen zurückgegeben (wie in dieser Frage beschrieben ).
Ich kann die FQN in den Aliasnamen sehen: hostname -a
(Einer der Aliasnamen ist der von mir gesuchte FQN), aber die Reihenfolge der Aliasnamen ist nicht festgelegt.
Gibt es eine andere Möglichkeit, den vollständig qualifizierten Namen zuverlässig abzurufen und in einer Bash-Variablen zu speichern?
Antworten:
Ich habe es auf CentOS5 versucht:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Ich muss meinen DNS im TCP-Modus abfragen. Wenn UDP in Ihrer Umgebung funktioniert, lassen Sie die Option "T" weg.
Hinweis: Auf einem Ubuntu- Gast (VirtualBox) funktioniert es nicht:
Um alle Fälle abzudecken:
quelle
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
an meinenHier ist eine Möglichkeit, wie ich die FQN fand:
Mit anderen Worten, ich musste an
nslookup
die IP-Adresse, die mir so etwas gibt:Von da an ging es nur darum, durch Bash-String-Manipulationen das zu entfernen, was ich nicht wollte .
Vielleicht gibt es einen einfacheren Weg?
quelle
Ihre Methode funktioniert nur, wenn Sie Ihren Hostnamen richtig konfiguriert haben und die richtigen DNS-Einstellungen usw. haben. Wenn Sie all das haben, dann kennen Sie Ihren FQDN bereits.
Es gibt keinen zuverlässigen Weg, um die FQDN zu erhalten. Eine einzelne IP-Adresse kann mehrere FQDN haben, und eine einzelne FQDN kann mehrere IP-Adressen haben ... und viele IP-Adressen haben überhaupt keine FQDN.
Wenn Ihr Computer direkt mit dem Internet verbunden ist, verwenden Sie einfach die IP-Adresse und stellen Sie eine umgekehrte DNS-Anfrage:
host 1.2.3.4
Dies gibt Ihnen jedoch häufig nicht die gewünschte Antwort (versuchen Sie es zum Beispiel mit Google).
quelle
host
, um nur die A-Aufzeichnung zu erhalten (oder führen Sie eine entsprechende Suche durch).Funktioniert
hostname --fqdn
bei dir nichtquelle
hostname --fqdn
abrufen muss , wird der Kurzname zurückgegeben, wobei fqdn als einer der Hostnamen-Aliase definiert ist.-f
und bin--fqdn
dasselbe.In Ubuntu ist das möglich
hostname -A
quelle
Als plattformübergreifende Alternative, wenn Sie nichts dagegen haben, Python zu verwenden (läuft mindestens unter Python 2.7 und Python 3)
quelle
Eine OS X-Safe-Bash-Only-Methode, die aufgrund von Variationen in der Befehlsausgabe wahrscheinlich nicht mit anderen * nix-Varianten funktioniert:
Python ist wahrscheinlich die beste Wahl für eine breite Kompatibilität.
quelle