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
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
Câu trả lời:
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
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.
Đ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)
}
domainnname
thự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.
hostname --fqdn | cut -d. -f2-4
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 --fqdn
hỗ trợ trên Solaris 11?
tên máy chủ | awk '{in $ NF}'
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}
Tôi đã thực hiện một cách giải quyết nhỏ hostname
và host
:
$ 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)}'
hostname -i
in địa chỉ IP tương ứng với tên máy chủ.
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
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
host
lệnh không? có vẻ như lệnh của bạn host
có bí danhhost -a
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
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ủ)"
printf "%s" "$(hostname) $(domainname)"
hoạt động?