Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

In unix (Solaris) is there any command that returns the hostname and domain name together?

For instance:

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

I need : servername.us.xyz.com

share|improve this question

migrated from stackoverflow.com May 9 '12 at 9:17

This question came from our site for professional and enthusiast programmers.

1  
Does printf "%s" "$(hostname) $(domainname)" not work? –  jasonwryan May 9 '12 at 9:54

6 Answers 6

This one has been bugging me for years, too. I just work around it by saying

$(hostname).$(domainname)

You could define a shell function or alias:

fqdn () {
    echo $(hostname).$(domainname)
}
share|improve this answer
3  
domainnname actually reports your NIS domain if you're running NIS. This is not necessarily the same as your DNS domain name. –  Magellan May 9 '12 at 17:45
    
No, it isn't. But since I've managed to evade/avoid NIS since it was Yellow Pages, I never knew that. :) So is there a reliable way to get the domain name if the NIS one is different? –  Alexios May 9 '12 at 20:33
    
You should feel blessed that you've avoided NIS. It's annoying. And even the Mozilla Thunderbird team screwed this one up since they depended on 'domainname' output for the default reply-to in 2.0. For actual domainname, I use hostname --fqdn | cut -d. -f2-4 –  Magellan May 10 '12 at 16:28
1  
This works well on Linux. On Solaris at least up to 10, hostname --fqdn sets the hostname to ‘--fqdn’, which is probably a bad idea (so make sure you're not root if you try it). :) Is --fqdn supported on Solaris 11? –  Alexios May 11 '12 at 21:54
1  
Oy! Inadvertently setting the hostname would be a pain, and the OP did say Solaris. Thanks! –  Magellan May 11 '12 at 21:59

The command

hostname --fqdn (or -f)

might also do what you want or not since on my system I get (none) when I run domainname

share|improve this answer
5  
According to the manpage for hostname(1) on Solaris 10 (on sun4v) and every older version I've used, --fqdn isn't available. It just tries to set the hostname to --fqdn. If you run it as a non-superuser for safety, it says ‘uname: error in setting name: Not owner’. This is obviously the stock Solaris hostname. The poster doesn't indicate whether or not they have the GNU toolset installed. –  Alexios May 11 '12 at 21:57

This will work if your domain is set correctly in resolv.conf. You can also use the domainname command the others have mentioned if your NIS domainname is the same as your DNS domain.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`
share|improve this answer

In a Unix bash script, in Sun Solaris 10, I just displayed my host name by:

echo "My hostname is $(hostname)"

share|improve this answer
    
"along with domain name" –  Michael Mrozek Mar 21 '13 at 3:21

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

share|improve this answer
2  
Please explain a bit for non-experts. –  vonbrand Mar 20 '13 at 19:05
    
Synopsis /usr/sbin/check-hostname Description The check-hostname script is a migration aid for sendmail(1M). This script tries to determine the local host's fully-qualified host name (FQHN) in a manner similar to sendmail(1M). If check-hostname is able to determine the FQHN of the local host, it reports success. Otherwise, check-hostname reports how to reconfigure the system so that the FQHN can be properly determined. –  ealgumby Mar 20 '13 at 19:53
    
/usr/sbin/check-hostname will report the FQDN, if it is defined, on Solaris systems. Piping the output to awk and using print $NF just reports the last field of output from check-hostname, which is the FQDN. This is the most direct method I am aware of to obtain this information from the command line, assuming you have a fully qualified domain name. If not, then this will not work, but I did not feel the need to show that, as in that case hostname is all you have. If you are not using Solaris, this will not work either, but the query was directed for Solaris. –  ealgumby Mar 20 '13 at 20:04
    
This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient reputation you will be able to comment on any post. –  maxmackie Mar 20 '13 at 20:18
2  
The real answer is in your comments. Giving a one-line command with little (or in your case, none) explanation is not the kind of answer this website is about. –  rahmu Mar 20 '13 at 23:08

On Solaris this worked well for me: sorry for the backtick, it is the reversed quote next to number 1 on a qwerty keyboard or you can use $( command) in KSH

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

or

getent hosts $(/usr/bin/hostname)

example:

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

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

getent queries the current name search mechanism as specified in /etc/nsswitch.conf and returns the information that matches the search, here it returns the info as found in /etc/hosts. if you lookup for the host info for another host that is not in /etc/hosts, it will look in DNS provided that is what is defined in /etc/nsswitch.conf

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.