In this article, we are going to discuss the dmidecode
Linux tool, which will gather information about the system such as CPU information, server, memory, and networking.
Prerequisites
Besides having a terminal open, we need to remember a few concepts:
- We are going to use some commands that will give us information about the Kernel, Linux distribution, physical server information, system uptime, network information, memory information, and CPU information.
- By using this, anyone can create scripts to gather system information.
How to do it
We can get details about the Linux distribution that you are working on. These distributions have a release file that you can locate in the /etc/
folder. Now, open a terminal and enter the following command to get the information regarding the Linux distribution you are working on:
<code>cat /etc/*-release</code>
The preceding option has an alternative, and the alternative is the version file that’s present in the /proc
folder. So, run the following command:
<code>cat /proc/version</code>
Now, run the following command to get the Kernel’s information:
<code>uname -a</code>
System uptime
: for information about this, create a script called server_uptime.sh
:
server_uptime=`uptime | awk '{print $3,$4}'| sed 's/,//'| grep "day"`;
if [[ -z "$server_uptime" ]]; then
server_uptime=`uptime | awk '{print $3}'| sed 's/,//'`
echo $server_uptime
else
:;
fi;
Now, we will run the following commands to get the physical server’s information:
$ sudo dmidecode -s system-manufacture
$ sudo dmidecode -s system-product-name
$ sudo dmidecode -s system-serial-number
Then, we will run the following command to get the CPU’s information:
sudo dmidecode -t4|awk '/Handle / {print $2}' |sed 's/,//'
You can get each CPU’s information from the cpuinfo
file, which is present in the /proc
directory.
Network information:
We are going to get the IP address by running the following command:
ip a
To get the MAC address, run the following command:
ip addr show ens33
You may replace ens33
with eth0
, depending on your network interface’s information.
Memory information:
To get the total number of slots, run the following command:
sudo dmidecode -t17 |awk '/Handle / {print $2}'|wc -l
To get the total populated slots, run the following command:
sudo dmidecode -t17 |awk '/Size:/'|awk '!/No/'|wc -l
To get the total unpopulated slots, run the following command:
sudo dmidecode -t17 |awk '/Size:/'|awk '/No/'|wc -l
How it works
After running the cat /etc/*-release
command, press Enter and you will get the output according to your Linux distribution. In my case, the output is as follows:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=Debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
There is an alternate way to get system information. You can get the system information by running a version file from the /proc
directory. After running the command, press Enter, and you will get the output according to your Linux distribution. In my case, the output is as follows:
Linux version 4.13.0-45-generic (buildd@lgw01-amd64-011) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #50~16.04.1-Ubuntu SMP Wed May 30 11:18:27 UTC 2018
uname
is the tool that we are using to gather this information. Press Enter after running the command and you will get the Kernel information. In my case, the output is as follows:
Linux ubuntu 4.13.0-45-generic #50~16.04.1-Ubuntu SMP Wed May 30 11:18:27 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Execute the $ bash server_uptime.sh
script—press Enter at the prompt and you will get the uptime of the server.
To get the physical server information, we used the dmidecode
tool. The first command is used to get the manufacturer’s information, the second command is to get the model name, and the third command gets the serial number. While running a dmidecode
command, you must be the root user.
The output snippet will look as follows:
0x0004
0x0005
0x0006
0x0007
To get each CPU’s information, we created a script. Execute the $ sudo bash cpu_info.sh
script—press Enter at the prompt and you will get information for each CPU.
The output snippet will look like the following:
CPU#000
Unknown
GenuineIntel
1800MHz
3.3V
1
CPU#001
Unknown
GenuineIntel
1800MHz
3.3V
1
CPU#002
Unknown
GenuineIntel
1800MHz
3.3V
1
CPU#003
Unknown
GenuineIntel
1800MHz
3.3V
1
Network information: We ran the ip
command to get the IP address and MAC address.
Memory information: We used the dmidecode
tool to get the memory information such as the total number of slots, and the total populated and unpopulated slots. You must be the root user to run this command.
0 Comments