Saya telah menguji hostname
pada beberapa server (RedHat, Ubuntu), dan hostname -f
telah terbukti tidak dapat diandalkan, kadang-kadang mengembalikan nama pendek saja (seperti yang dijelaskan dalam pertanyaan ini ).
Saya bisa melihat fqn di alias: hostname -a
(salah satu alias adalah fqn yang saya cari), tetapi urutan alias tidak diperbaiki.
Apakah ada cara lain untuk mendapatkan nama yang sepenuhnya memenuhi syarat andal, dan menyimpannya dalam variabel bash?
Jawaban:
Saya mencoba ini di CentOS5:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Saya harus menanyakan DNS saya dalam Mode-TCP. Jika UDP berfungsi di lingkungan Anda, tinggalkan opsi "T".
Catatan: pada tamu Ubuntu (VirtualBox) itu tidak akan berfungsi:
Jadi untuk mencakup semua kasus:
sumber
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
mengerjakan server redhat sayaInilah salah satu cara saya menemukan fqn:
Dengan kata lain, saya harus ke
nslookup
alamat IP, yang memberi saya sesuatu seperti:Dari sana, itu hanya pertanyaan untuk menghapus apa yang tidak saya inginkan, melalui manipulasi string bash .
Mungkin ada cara yang lebih sederhana?
sumber
Metode Anda hanya berfungsi jika Anda telah mengkonfigurasi nama host Anda dengan benar, dan memiliki pengaturan dns yang benar, dll. Jika Anda memiliki semua itu, maka Anda sudah tahu fqdn Anda.
Tidak ada cara yang dapat diandalkan untuk mendapatkan fqdn. Satu alamat IP dapat memiliki beberapa fqdn, dan satu fqdn dapat memiliki beberapa alamat IP ... dan banyak IP tidak memiliki fqdn sama sekali.
Jika mesin Anda terhubung langsung ke internet, cukup gunakan alamat IP dan buat permintaan DNS terbalik:
host 1.2.3.4
Tetapi ini sangat sering tidak memberi Anda jawaban yang diinginkan (coba saja dengan google misalnya).
sumber
host
untuk hanya mendapatkan A-record (atau melakukan pencarian yang sesuai).Tidak
hostname --fqdn
bekerja untukmusumber
hostname --fqdn
mengembalikan nama pendek, dengan fqdn didefinisikan sebagai salah satu alias hostname.-f
dan--fqdn
merupakan hal yang sama.Di Ubuntu, Anda bisa melakukannya
hostname -A
sumber
Untuk alternatif lintas-platform, jika Anda tidak keberatan menggunakan python (berjalan setidaknya di python 2.7 dan python 3)
sumber
Metode OS X safe bash only, yang kemungkinan tidak akan berfungsi dengan rasa * nix lain karena variasi dalam output perintah:
Python kemungkinan adalah taruhan terbaik Anda untuk kompatibilitas luas.
sumber