ใน unix (Solaris) มีคำสั่งใดบ้างที่ส่งคืนชื่อโฮสต์และชื่อโดเมนด้วยกันไหม?
ตัวอย่างเช่น
hostname -> servername
domainname -> us.xyz.com
ฉันต้องการ : servername.us.xyz.com
ใน unix (Solaris) มีคำสั่งใดบ้างที่ส่งคืนชื่อโฮสต์และชื่อโดเมนด้วยกันไหม?
ตัวอย่างเช่น
hostname -> servername
domainname -> us.xyz.com
ฉันต้องการ : servername.us.xyz.com
คำตอบ:
สิ่งนี้จะทำงานหากโดเมนของคุณตั้งค่าไว้อย่างถูกต้องใน resolv.conf คุณยังสามารถใช้คำสั่ง domainname ที่คนอื่น ๆ พูดถึงถ้า NIS domainname ของคุณเหมือนกับโดเมน DNS ของคุณ
echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`
คำสั่ง
hostname --fqdn (or -f)
อาจทำสิ่งที่คุณต้องการหรือไม่ตั้งแต่ในระบบของฉันฉันได้รับ(none)
เมื่อฉันทำงานdomainname
hostname(1)
ใน Solaris 10 (ใน sun4v) และทุกรุ่นที่เก่ากว่าที่ฉันเคยใช้--fqdn
ไม่มี --fqdn
มันเป็นเพียงแค่พยายามที่จะตั้งชื่อโฮสต์ไป หากคุณเรียกใช้เป็นผู้ไม่ใช้ superuser เพื่อความปลอดภัยจะมีข้อความระบุว่า 'uname: error ในการตั้งชื่อ: ไม่ใช่เจ้าของ' นี้จะเห็นได้ชัด hostname
Solaris โปสเตอร์ไม่ได้ระบุว่าติดตั้งชุดเครื่องมือ GNU หรือไม่
อันนี้ก็บักฉันมาหลายปีแล้วเหมือนกัน ฉันแค่แก้ไขมันด้วยการพูด
$(hostname).$(domainname)
คุณสามารถกำหนดฟังก์ชันเปลือกหรือนามแฝง:
fqdn () {
echo $(hostname).$(domainname)
}
domainnname
รายงานโดเมน NIS ของคุณจริงถ้าคุณใช้ NIS นี่ไม่จำเป็นต้องเหมือนกับชื่อโดเมน DNS ของคุณ
hostname --fqdn | cut -d. -f2-4
hostname --fqdn
ตั้งชื่อโฮสต์เป็น '--fqdn' ซึ่งอาจเป็นแนวคิดที่ไม่ดี (ดังนั้นอย่าลืมรูทหากคุณลอง) :) --fqdn
รองรับ Solaris 11 หรือไม่
ตรวจสอบชื่อโฮสต์ | awk '{พิมพ์ $ NF}'
ฉันรู้ว่านี่เป็นเธรดที่เก่ากว่า แต่ฉันต้องการดึงชื่อโฮสต์และชื่อโดเมนแยกต่างหากในสคริปต์
การตอบสนองของ ealgumby ต่อการใช้ชื่อโฮสต์เช็คเป็นสิ่งที่ฉันไม่เคยเห็นมาก่อนดังนั้นฉันจึงพยายามอย่างยิ่งที่จะประสบความสำเร็จตามความต้องการของฉัน ฉันจะทำเครื่องหมายว่าเป็นประโยชน์ แต่เห็นได้ชัดว่าฉันไม่มีตัวแทนให้ทำ
ฉันตั้งค่าโดเมนดังนี้วนลูปผ่านเอาท์พุทจากชื่อโฮสต์ตรวจสอบ
domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}
ฉันได้แก้ไขปัญหาเล็กน้อยhostname
แล้วและhost
:
$ host $(hostname -i) | awk '{print $NF }'
(ฉันใช้ Centos แต่ควรทำงานที่อื่น)
รับโดเมนโดยไม่ต้องจุดต่อท้าย:
$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'
hostname -i
พิมพ์ที่อยู่ IP ที่สอดคล้องกับชื่อโฮสต์
host
คำสั่ง สิ่งนี้จะทำให้คุณได้สิ่งนี้: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname.
กับ awk ฉันได้คอลัมน์สุดท้ายนั่นคือhostname.domainname
host $(hostname -i)
ชื่อโฮสต์ 8 รายการทั้งหมดที่มี IP เดียวกันและไม่มีชื่อโฮสต์ที่ตรงกับโฮสต์ของฉัน
host
คำสั่ง? ดูเหมือนว่าคำสั่งของคุณhost
จะมีนามแฝงต่อhost -a
บน Solaris มันใช้งานได้ดีสำหรับฉัน: ขอโทษสำหรับ backtick มันเป็นคำพูดที่ตรงกันข้ามกับหมายเลข 1 บนคีย์บอร์ดแบบ qwerty หรือคุณสามารถใช้ $ (command) ใน KSH
getent hosts (backtick) /usr/bin/hostname (backtick)
หรือ
getent hosts $(/usr/bin/hostname)
ตัวอย่าง:
root@melauto:[/]# getent hosts $(/usr/bin/hostname)
10.4.19.241 melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]#
getent queries กลไกค้นหาชื่อปัจจุบันตามที่ระบุใน /etc/nsswitch.conf /etc/hosts
และส่งกลับข้อมูลที่ตรงกับการค้นหาที่นี่ก็จะส่งกลับข้อมูลที่พบใน หากคุณค้นหาข้อมูลโฮสต์สำหรับโฮสต์อื่นที่ไม่ได้อยู่ใน/etc/hosts
นั้นจะค้นหาใน DNS ที่ระบุว่าเป็นสิ่งที่กำหนดไว้/etc/nsswitch.conf
ใน Unix bash script ใน Sun Solaris 10 ฉันเพิ่งแสดงชื่อโฮสต์โดย:
echo "ชื่อโฮสต์ของฉันคือ $ (ชื่อโฮสต์)"
printf "%s" "$(hostname) $(domainname)"
ได้?