Bagaimana cara mendapatkan nama host bersama dengan nama domain?

18

Di unix (Solaris) apakah ada perintah yang mengembalikan nama host dan nama domain bersama?

Contohnya:

hostname -> servername
domainname -> us.xyz.com

Saya butuh : servername.us.xyz.com

strugee
sumber
2
Tidak printf "%s" "$(hostname) $(domainname)"bekerja
jasonwryan
coba gunakan "hostname -f" yang akan cukup saya harap begitu
abhishek kumar srivastava

Jawaban:

14

Ini akan berfungsi jika domain Anda diatur dengan benar di resolv.conf. Anda juga dapat menggunakan perintah domainname yang disebutkan orang lain jika nama domain NIS Anda sama dengan domain DNS Anda.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`
Nicholas
sumber
13

Perintah

hostname --fqdn (or -f)

mungkin juga melakukan apa yang Anda inginkan atau tidak karena pada sistem saya saya dapatkan (none)ketika saya menjalankandomainname

Elwillow
sumber
8
Menurut manual untuk hostname(1)pada Solaris 10 (pada sun4v) dan setiap versi lama yang saya gunakan, --fqdntidak tersedia. Itu hanya mencoba untuk mengatur nama host --fqdn. Jika Anda menjalankannya sebagai non-superuser untuk keamanan, ia mengatakan 'uname: error dalam menetapkan nama: Bukan pemilik'. Ini jelas merupakan stok Solaris hostname. Poster tidak menunjukkan apakah mereka memiliki set alat GNU atau tidak.
Alexios
5

Yang ini sudah menggangguku selama bertahun-tahun juga. Saya hanya mengatasinya dengan mengatakan

$(hostname).$(domainname)

Anda bisa mendefinisikan fungsi shell atau alias:

fqdn () {
    echo $(hostname).$(domainname)
}
Alexios
sumber
4
domainnnamesebenarnya melaporkan domain NIS Anda jika Anda menjalankan NIS. Ini belum tentu sama dengan nama domain DNS Anda.
Magellan
Tidak. Tapi karena saya sudah berhasil menghindari / menghindari NIS karena itu adalah Yellow Pages, saya tidak pernah tahu itu. :) Jadi, apakah ada cara yang dapat diandalkan untuk mendapatkan nama domain jika NIS berbeda?
Alexios
Anda harus merasa diberkati bahwa Anda telah menghindari NIS. Itu menyebalkan. Dan bahkan tim Mozilla Thunderbird mengacaukan yang satu ini karena mereka bergantung pada keluaran 'domainname' untuk balasan-ke default di 2.0. Untuk nama domain sebenarnya, saya menggunakanhostname --fqdn | cut -d. -f2-4
Magellan
1
Ini bekerja dengan baik di Linux. Pada Solaris setidaknya hingga 10, hostname --fqdn tetapkan nama host ke '--fqdn', yang mungkin merupakan ide yang buruk (jadi pastikan Anda tidak melakukan root jika Anda mencobanya). :) Apakah --fqdndidukung pada Solaris 11?
Alexios
1
Oy! Secara tidak sengaja mengatur nama host akan menyusahkan, dan OP mengatakan Solaris. Terima kasih!
Magellan
4

check-hostname | awk '{print $ NF}'

ealgumby
sumber
2
Tolong jelaskan sedikit untuk non-ahli.
vonbrand
Sinopsis / usr / sbin / check-hostname Deskripsi Skrip check-hostname adalah bantuan migrasi untuk sendmail (1M). Skrip ini mencoba menentukan nama host berkualifikasi lengkap host (FQHN) dengan cara yang mirip dengan sendmail (1M). Jika check-hostname dapat menentukan FQHN dari host lokal, ini melaporkan keberhasilan. Jika tidak, periksa hostname melaporkan cara mengkonfigurasi ulang sistem sehingga FQHN dapat ditentukan dengan benar.
ealgumby
/ usr / sbin / check-hostname akan melaporkan FQDN, jika didefinisikan, pada sistem Solaris. Memipipkan output ke awk dan menggunakan print $ NF hanya melaporkan bidang keluaran terakhir dari cek-hostname, yang merupakan FQDN. Ini adalah metode paling langsung yang saya ketahui untuk memperoleh informasi ini dari baris perintah, dengan asumsi Anda memiliki nama domain yang sepenuhnya memenuhi syarat. Jika tidak, maka ini tidak akan berhasil, tetapi saya tidak merasa perlu untuk menunjukkan itu, karena dalam hal ini hanya nama host yang Anda miliki. Jika Anda tidak menggunakan Solaris, ini tidak akan berhasil, tetapi kueri diarahkan untuk Solaris.
ealgumby
Serius, saya tidak mengerti bagaimana ini tidak menjawab pertanyaan, yaitu: "Di unix (Solaris) apakah ada perintah yang mengembalikan nama host dan nama domain bersama?" Jawabannya adalah "ya", dan perintah itu adalah: check-hostname | awk '{print $ NF}'
ealgumby
3
Jawaban sebenarnya ada di komentar Anda. Memberikan perintah satu baris dengan sedikit (atau dalam kasus Anda, tidak ada) penjelasan bukanlah jenis jawaban dari situs web ini.
rahmu
2

Saya tahu ini adalah utas yang lebih lama tetapi saya memiliki kebutuhan untuk menarik nama host dan nama domain secara terpisah dalam sebuah skrip.

Tanggapan ealgumby untuk menggunakan check-hostname adalah sesuatu yang belum pernah saya lihat sebelumnya jadi saya mencobanya untuk sukses besar untuk kebutuhan saya. Saya akan menandainya sebagai bermanfaat tetapi tampaknya saya tidak memiliki perwakilan untuk melakukannya.

Saya mengatur domain sebagai berikut perulangan melalui keluaran dari check-hostname.

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}
ASG
sumber
1

Saya telah melakukan sedikit solusi untuk hostnamedan host:

$ host $(hostname -i) | awk '{print $NF }'

(Saya menggunakan Centos tetapi harus bekerja di tempat lain)

Mendapatkan domain tanpa trailing dot:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'
pengguna1314742
sumber
di ubuntu saya, hostname -icetak alamat IP yang sesuai dengan nama host.
Archemar
Ya itu benar, jadi saya meneruskan IP ini ke host perintah. Ini akan membuat Anda mendapatkan sesuatu seperti ini: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. dengan awk saya mendapatkan kolom terakhir yaituhostname.domainname
user1314742
host $(hostname -i)
Begitu ya
Anda yakin tidak memiliki alias untuk hostperintah? tampaknya perintah Anda hostmemiliki alias kehost -a
user1314742
0

Pada Solaris ini bekerja dengan baik untuk saya: maaf untuk backtick, itu adalah kutipan terbalik di sebelah nomor 1 pada keyboard qwerty atau Anda dapat menggunakan $ (perintah) di KSH

getent hosts (backtick) /usr/bin/hostname (backtick)

atau

getent hosts $(/usr/bin/hostname)

contoh:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getent menanyakan mekanisme pencarian nama saat ini seperti yang ditentukan dalam /etc/nsswitch.conf dan mengembalikan informasi yang cocok dengan pencarian, di sini ia mengembalikan info seperti yang ditemukan di /etc/hosts. jika Anda mencari info host untuk host lain yang tidak ada /etc/hosts, itu akan mencari di DNS asalkan apa yang didefinisikan dalam/etc/nsswitch.conf

Blaise
sumber
-2

Dalam skrip bash Unix, di Sun Solaris 10, saya baru saja menampilkan nama host saya dengan:

echo "Nama hostanku adalah $ (nama host)"

Sue Merritt Walker-Thornton
sumber
"bersama dengan nama domain"
Michael Mrozek