Làm thế nào để có được tên máy chủ cùng với tên miền?


18

Trong unix (Solaris) có lệnh nào trả lại tên máy chủ và tên miền cùng nhau không?

Ví dụ:

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

Tôi cần : servername.us.xyz.com


2
Không printf "%s" "$(hostname) $(domainname)"hoạt động?
jasonwryan

hãy thử sử dụng "tên máy chủ -f" sẽ đủ để tôi hy vọng vậy
abhishek kumar srivastava

Câu trả lời:


14

Điều này sẽ hoạt động nếu tên miền của bạn được đặt chính xác trong độ phân giải. Bạn cũng có thể sử dụng lệnh tên miền mà những người khác đã đề cập nếu tên miền NIS của bạn giống với tên miền DNS của bạn.

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

13

Lệnh

hostname --fqdn (or -f)

cũng có thể làm những gì bạn muốn hoặc không vì trên hệ thống của tôi, tôi nhận được (none)khi chạydomainname


8
Theo trang hướng dẫn hostname(1)trên Solaris 10 (trên sun4v) và mọi phiên bản cũ hơn tôi đã sử dụng, --fqdnđều không có sẵn. Nó chỉ cố gắng đặt tên máy chủ thành --fqdn. Nếu bạn chạy nó dưới dạng không phải là siêu người dùng để đảm bảo an toàn, nó sẽ báo 'uname: lỗi trong tên thiết lập: Không phải chủ sở hữu'. Đây rõ ràng là cổ phiếu Solaris hostname. Người đăng không cho biết họ có cài đặt bộ công cụ GNU hay không.
Alexios

5

Điều này đã được tôi làm phiền trong nhiều năm, quá. Tôi chỉ làm việc xung quanh nó bằng cách nói

$(hostname).$(domainname)

Bạn có thể định nghĩa hàm shell hoặc bí danh:

fqdn () {
    echo $(hostname).$(domainname)
}

4
domainnnamethực sự báo cáo tên miền NIS của bạn nếu bạn đang chạy NIS. Điều này không nhất thiết giống như tên miền DNS của bạn.
Magellan

Không, không phải vậy. Nhưng vì tôi đã trốn tránh / tránh NIS vì đó là Trang Vàng, tôi không bao giờ biết điều đó. :) Vì vậy, có một cách đáng tin cậy để có được tên miền nếu một NIS là khác nhau?
Alexios

Bạn nên cảm thấy may mắn vì bạn đã tránh được NIS. Phiền thật đấy. Và thậm chí nhóm Mozilla Thunderbird đã làm hỏng việc này vì họ phụ thuộc vào đầu ra 'tên miền' cho phản hồi mặc định trong 2.0. Đối với tên miền thực tế, tôi sử dụnghostname --fqdn | cut -d. -f2-4
Magellan

1
Điều này hoạt động tốt trên Linux. Trên Solaris ít nhất lên tới 10, hostname --fqdn đặt tên máy chủ thành '--fqdn', đây có thể là một ý tưởng tồi (vì vậy hãy chắc chắn rằng bạn không root nếu bạn thử nó). :) Được --fqdnhỗ trợ trên Solaris 11?
Alexios

1
Ôi! Vô tình đặt tên máy chủ sẽ là một nỗi đau, và OP đã nói Solaris. Cảm ơn!
Magellan

4

tên máy chủ | awk '{in $ NF}'


2
Hãy giải thích một chút cho những người không phải là chuyên gia.
vonbrand

Tóm tắt / usr / sbin / check-hostname Mô tả Tập lệnh check-hostname là một trợ giúp di chuyển cho sendmail (1M). Tập lệnh này cố gắng xác định tên máy chủ đủ điều kiện (FQHN) của máy chủ lưu trữ cục bộ theo cách tương tự như sendmail (1M). Nếu tên máy chủ kiểm tra có thể xác định FQHN của máy chủ lưu trữ cục bộ, nó báo cáo thành công. Mặt khác, tên máy chủ kiểm tra báo cáo cách cấu hình lại hệ thống để FQHN có thể được xác định chính xác.
ealgumby

/ usr / sbin / check-hostname sẽ báo cáo FQDN, nếu được xác định, trên các hệ thống Solaris. Đường ống đầu ra đến awk và sử dụng in $ NF chỉ báo cáo trường đầu ra cuối cùng từ tên máy chủ kiểm tra, đó là FQDN. Đây là phương pháp trực tiếp nhất mà tôi biết để có được thông tin này từ dòng lệnh, giả sử bạn có một tên miền đủ điều kiện. Nếu không, thì điều này sẽ không hoạt động, nhưng tôi không cảm thấy cần phải thể hiện điều đó, vì trong trường hợp đó, tên máy chủ là tất cả những gì bạn có. Nếu bạn không sử dụng Solaris, điều này cũng sẽ không hoạt động, nhưng truy vấn được chuyển hướng cho Solaris.
ealgumby

Nghiêm túc mà nói, tôi không hiểu làm thế nào điều này không trả lời câu hỏi, đó là: "Trong unix (Solaris) có lệnh nào trả lại tên máy chủ và tên miền cùng nhau không?" Câu trả lời là "có", và lệnh đó là: check-hostname | awk '{print $ NF}'
ealgumby 20/03/13

3
Câu trả lời thực sự là trong ý kiến ​​của bạn. Đưa ra một lệnh một dòng với rất ít (hoặc trong trường hợp của bạn, không có lời giải thích nào) không phải là loại câu trả lời mà trang web này đưa ra.
rahmu

2

Tôi biết đây là một chủ đề cũ hơn nhưng tôi có nhu cầu kéo riêng tên máy chủ và tên miền trong một tập lệnh.

Phản ứng của ealgumby đối với việc sử dụng tên máy chủ kiểm tra là điều mà tôi chưa từng thấy trước đây vì vậy tôi đã cố gắng thành công lớn cho nhu cầu của mình. Tôi sẽ đánh dấu nó là hữu ích nhưng dường như tôi không có đại diện để làm như vậy.

Tôi đặt tên miền như sau lặp qua đầu ra từ tên máy chủ kiểm tra.

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

1

Tôi đã thực hiện một cách giải quyết nhỏ hostnamehost:

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

(Tôi đang sử dụng Centos nhưng nó sẽ hoạt động ở nơi khác)

Lấy tên miền mà không có dấu chấm:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'

trên Ubuntu của tôi, hostname -iin địa chỉ IP tương ứng với tên máy chủ.
Archemar 6/07/2015

Đúng vậy, vì vậy tôi chuyển IP này để host chỉ huy. Điều này sẽ mang lại cho bạn một cái gì đó như thế này: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. với awk tôi nhận được cột cuối cùnghostname.domainname
user1314742

Tôi thấy, thật đáng tiếc khi sử dụng host $(hostname -i)cho tôi một danh sách 8 tên máy chủ, tất cả đều có cùng một IP và không có tên máy chủ tương ứng với máy chủ của tôi
Archemar 6/07/2015

bạn có chắc là bạn không có bí danh nào cho hostlệnh không? có vẻ như lệnh của bạn hostcó bí danhhost -a
user1314742

0

Trên Solaris điều này hoạt động tốt với tôi: xin lỗi vì backtick, đó là trích dẫn đảo ngược bên cạnh số 1 trên bàn phím qwerty hoặc bạn có thể sử dụng $ (lệnh) trong KSH

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

hoặc là

getent hosts $(/usr/bin/hostname)

thí dụ:

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

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

getent truy vấn cơ chế tìm kiếm tên hiện tại như được chỉ định trong /etc/nsswitch.conf và trả về thông tin phù hợp với tìm kiếm, ở đây nó trả về thông tin như được tìm thấy trong /etc/hosts. nếu bạn tìm kiếm thông tin máy chủ cho một máy chủ khác không có trong /etc/hostsđó, nó sẽ tìm trong DNS với điều kiện đó là những gì được xác định trong/etc/nsswitch.conf


-2

Trong tập lệnh bash Unix, trong Sun Solaris 10, tôi chỉ hiển thị tên máy chủ của mình bằng cách:

echo "Tên máy chủ của tôi là $ (tên máy chủ)"


"cùng với tên miền"
Michael Mrozek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.