# Another one line command where I'd like to determine if Ubuntu or Red Hat when running command

**URL:** <https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545>\
**Category:** UNIX for Beginners Q & A\
**Created:** [October 26, 2019, 10:12pm UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545 "2019-10-26T22:12:26Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![greavette](https://community.unix.com/letter_avatar/greavette/32/5_5575768a8748004e209b776fc1b2916d.png) [@greavette](https://community.unix.com/u/greavette)\
**Post date:** [October 26, 2019, 10:12pm UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/1 "2019-10-26T22:12:26Z")

</div>

Hello Forum,

I'm making very good progress on my report thanks to the very helpful people on this forum. I've been able to successfully create my report for my Red Hat servers. But I do have a few ubuntu servers in the mix and I'd like to capture some data from them when an ssh connection is made.

I have a command here to find the inactive kernels on a Red Hat VM:

```nohighlight
rpm -qa | grep '^kernel-[0-9]' |grep -vE `uname -r` | paste -sd \;

```

I'm trying to get this one line command to be Linux Type aware by issuing something like the following where if the os-release is Red Hat then I issue the command above to find the Red Hat installed kernels. This isn't working but this is what I'm trying to do:

```nohighlight
awk -F= '/^NAME/{print $2}' /etc/os-release 2>/dev/null || grep Red |cat /etc/redhat-release 2>/dev/null || lsb_release -a 2>/dev/null | grep Description | cut -f2

```

I'm not sure if it's even possible but I would really like to issue the command to find the installed kernels for Red Hat servers and if the servers are ubuntu then issue another command for Ubuntu inactive kernels. I'm not sure what the command is to find the Ubuntu inactive kernels so I'll look that up...but for this post could someone point me in the right direction here on how to write the one line command to check for O/S type and issue commands based on that type.

Thank you.

---

<div class="post-metadata">

**Author:** ![Neo](https://community.unix.com/user_avatar/community.unix.com/neo/32/22838_2.png) [@Neo](https://community.unix.com/u/Neo)\
**Post date:** [October 26, 2019, 11:11pm UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/2 "2019-10-26T23:11:37Z")

</div>

Moderator comments were removed during original forum migration.

---

<div class="post-metadata">

**Author:** ![RudiC](https://community.unix.com/letter_avatar/rudic/32/5_5575768a8748004e209b776fc1b2916d.png) [@RudiC](https://community.unix.com/u/RudiC)\
**Post date:** [October 27, 2019, 3:35am UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/3 "2019-10-27T03:35:03Z")

</div>

Why not simply `ls` the `/boot` directory?

---

<div class="post-metadata">

**Author:** ![greavette](https://community.unix.com/letter_avatar/greavette/32/5_5575768a8748004e209b776fc1b2916d.png) [@greavette](https://community.unix.com/u/greavette)\
**Post date:** [October 27, 2019, 10:37pm UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/4 "2019-10-27T22:37:08Z")

</div>

Hello RudiC,

I researched how to use ls and /boot to find the distribution I was connecting to but I couldn't find a solution. But I did find another way using python that seems to be working for me with my very early tests:

```nohighlight
python -mplatform | grep -qi red && echo "RedHat" || echo "ubuntu"

```

This does work in that it looks for the work

```nohighlight
red

```

which means I can identify Red Hat Servers. Where I can see my code failing though is that my assumption is that if it's not Red Hat then it must be Ubuntu. I'm trying now to find a way to identify each type of distribution we have and specifically test for Red Hat (like I'm currently doing) or Ubuntu or even CentOS. Would you or someone else have a suggestion for me on how I can use my code to test for various types of Linux distributions?

Thank you.

---

<div class="post-metadata">

**Author:** ![RudiC](https://community.unix.com/letter_avatar/rudic/32/5_5575768a8748004e209b776fc1b2916d.png) [@RudiC](https://community.unix.com/u/RudiC)\
**Post date:** [October 28, 2019, 4:51am UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/5 "2019-10-28T04:51:11Z")

</div>

How about the

```nohighlight
lsb_release -a

```

command?

---

<div class="post-metadata">

**Author:** ![greavette](https://community.unix.com/letter_avatar/greavette/32/5_5575768a8748004e209b776fc1b2916d.png) [@greavette](https://community.unix.com/u/greavette)\
**Post date:** [October 28, 2019, 8:00am UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/6 "2019-10-28T08:00:03Z")

</div>

Hello again RudiC,

I suppose I could use lsb\_release -a as a check...but what would be the one line command to check if Red Hat to run an instruction and if not Red Hat and it's Ubuntu to run a different instruction? That's the part I'm having trouble with now. Here is the code I've tried using the python bit I found:

```nohighlight
if python -mplatform | grep -qi red; then rpm -qa | grep '^kernel-[0-9]' | grep -vE `uname -r` | paste -sd \; else python -mplatform | grep -qi Ubuntu; then echo "This is Ubuntu"

```

Thank you.

---

<div class="post-metadata">

**Author:** ![RudiC](https://community.unix.com/letter_avatar/rudic/32/5_5575768a8748004e209b776fc1b2916d.png) [@RudiC](https://community.unix.com/u/RudiC)\
**Post date:** [October 28, 2019, 10:04am UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/7 "2019-10-28T10:04:42Z")

</div>

`man lsb_release` might help. E.g.

```nohighlight
$ lsb_release -is
Ubuntu

```

A `case` statement could be used

```nohighlight
case $(lsb_release -is) in
    red*) # run red hat command
    ;;
    Ubu*) # run ubuntu command
    ;;
esac

```

---

<div class="post-metadata">

**Author:** ![greavette](https://community.unix.com/letter_avatar/greavette/32/5_5575768a8748004e209b776fc1b2916d.png) [@greavette](https://community.unix.com/u/greavette)\
**Post date:** [October 28, 2019, 5:54pm UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/8 "2019-10-28T17:54:37Z")

</div>

Hello,

lsb\_release was not working on my VM's sadly.

But I've managed to make progress with the following bit of code using a case statement:

```nohighlight
a=$(python -mplatform) && case $a in *"redhat-7"*) echo "Red Hat 7 VM";; *"Ubuntu"*) echo "Ubuntu VM";; *"redhat-6"*) echo "Red Hat 6 VM";; esac;

```

I'll keep working this and update this thread once I've figured out how to use this statement correctly to issue commands based on O/S version/type.

Thanks.

---

<div class="post-metadata">

**Author:** ![drl](https://community.unix.com/user_avatar/community.unix.com/drl/32/542_2.png) [@drl](https://community.unix.com/u/drl)\
**Post date:** [October 30, 2019, 9:10am UTC](https://community.unix.com/t/another-one-line-command-where-id-like-to-determine-if-ubuntu-or-red-hat-when-running-command/376545/9 "2019-10-30T09:10:25Z")

</div>

Hi.

We use a variety of platforms, so we often need to identify the one on which we are working. Here is a sampling showing the use of:

1. GNU script `config.guess` ,
2. file /etc/issue,
3. standard \*nix command `uname` ,
4. our local code `version`

Our code `version` is really for displaying versions of commands and scripts, but we found it convenient to identify the OS as an option as well as displaying a code version. We make use of `uname` for a number of elements in the display, but AIX and macOS, for example, need special processing. The code is probably not completely general, but the design it has suited our variety of OSs quite well. However, while the call to it is a single-line, the devil in the details requires a lot of extra code, and is, most emphatically, not a single-line.

```nohighlight
config.guess:
x86_64-pc-linux-gnu
/etc/issue:
Debian 10.0 (buster) \n \l
uname:
Linux vm-buster 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u2 (2019-08-08) x86_64 GNU/Linux
(local) version:
OS, ker|rel, machine: Linux, 4.19.0-5-amd64, x86_64
Distribution : Debian 10.0 (buster) 

config.guess:
x86_64-unknown-linux-gnu
/etc/issue:
CentOS 6.4 (Final) 
Kernel \r on an \m
uname:
Linux vm-centos 2.6.32-358.23.2.el6.centos.plus.x86_64 #1 SMP Thu Oct 17 00:31:29 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
(local) version:
OS, ker|rel, machine: Linux, 2.6.32-358.23.2.el6.centos.plus.x86_64, x86_64
Distribution : CentOS 6.4 (Final) 

config.guess:
x86_64-unknown-linux-gnu
/etc/issue:
Slackware 14.1 \n \l
uname:
Linux vm-slackware 3.18.11 #2 SMP Tue Apr 7 13:09:53 CDT 2015 x86_64 Intel(R) Xeon(R) CPU E31230 @ 3.20GHz GenuineIntel GNU/Linux
(local) version:
OS, ker|rel, machine: Linux, 3.18.11, x86_64
Distribution : Slackware 14.1 

config.guess:
x86_64-unknown-freebsd11.0
/etc/issue:
cat: /etc/issue: No such file or directory
uname:
FreeBSD vm-freebsd 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
(local) version:
OS, ker|rel, machine: FreeBSD, 11.0-RELEASE-p9, amd64

config.guess:
i386-pc-solaris2.11
/etc/issue:
cat: cannot open /etc/issue: No such file or directory
uname:
SunOS vm-solaris 5.11 11.3 i86pc i386 i86pc
(local) version:
OS, ker|rel, machine: SunOS, 5.11, i86pc
Distribution : Solaris 11.3 X86

config.guess:
x86_64-apple-darwin18.7.0
/etc/issue:
cat: /etc/issue: No such file or directory
uname:
Darwin lmin 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
(local) version:
OS, ker|rel, machine: Apple/BSD, Darwin 18.7.0, x86_64
Distribution : macOS 10.14.6 (18G103), Mojave

```

Some details for `config.guess` :

```nohighlight
config.guess guess the build system triplet (man)
Path : ~/bin/config.guess
Version : GNU config.guess (2016-02-11)
Length : 1455 lines
Type : POSIX shell script, ASCII text executable
Shebang : #! /bin/sh
Help : probably available with -h,--help
Home : http://savannah.gnu.org/projects/config (doc)

```

Best wishes ... cheers, drl
