So I wanted to make a script that would behave differently if we are running RedHat, CentOS, or Ubuntu. The findings here probably can be applied to other distros, but we need to start somewhere.
- Using lsb_release. I have been told before that the proper way to detect the OS/distro version is to use lsb_release. So, something like
distro=$(lsb_release -i | awk '{ print $3}' | tr 'A-Z' 'a-z')
Should do the trick. Of course that would imply it is installed, which might not be the case depending on how barebones is your install (less is more in my book). So, for our next trick, let's assume we do not have it installed.
Without lsb_release. It might come as a shock to some but it is possible to find a linux install without it... and also without word processor and games and even web browsers. Like in servers. How would we find out which distro we have?
RedHat and derivatives have the /etc/redhat-release file. It is easy to say if it is redhat or centos because it is written in the file itself.
distro=$([ -f /etc/redhat-release ] && echo rhel ) distro=$(grep -qi "redhat" /etc/redhat-release && echo rhel || echo centos )
But Ubuntu does not have that file. Back to the drawing board.
uname -v works on ubuntu
raub@desktop:/tmp$ uname -v #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 raub@desktop:/tmp$
But not on centos or redhat
[raub@vmguest ~]$ uname -v #1 SMP Tue Aug 23 19:58:13 UTC 2016 [raub@vmguest ~]$
Come on! We can do better than that!
/etc/issue seems to have the most potential
[raub@vmguest ~]$ cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \m [raub@vmguest ~]$
and on ubuntu
raub@desktop:/tmp$ cat /etc/issue Ubuntu 16.04.1 LTS \n \l raub@desktop:/tmp$
I think we got our winner
No comments:
Post a Comment