TranslateProject/sources/tech/20200422 How to Check the Available Network Interfaces, Associated IP Addresses, MAC Addresses, and Interface Speed on Linux.md
How to Check the Available Network Interfaces, Associated IP Addresses, MAC Addresses, and Interface Speed on Linux
======
By default when you set up the server you will configure the primary network interface.
This is part of the build work that everyone does.
Sometimes you may need to configure an additional network interface for several reasons.
This could be a network bonding/teaming or high availability or a separate interface for application requirements or backups.
To do so, you need to know how many interfaces your computer has and their speed to configure it.
There are many commands to check for available network interfaces, but we only use the IP command.
Later we will write a separate article with all these tools.
In this tutorial, we will show you the Available Network Interface Card (NIC) information, such as the interface name, associated IP address, MAC address, and interface speed.
### What’s IP Command
**[IP command][1]** is similar to ifconfig, which is used to for assigning Static IP Address, Route & Default Gateway, etc.,
inet 192.168.1.101/24 brd 192.168.1.101 scope global eth0
inet6 fe80::f816:3eff:fea0:7d5a/64 scope link
valid_lft forever preferred_lft forever
```
### What’s ethtool Command
The ethtool is used to query or control network driver and hardware settings.
```
# ethtool eth0
```
### 1) How to Check the Available Network Interfaces on Linux Using the IP Command
When you run the IP command without any arguments, it gives you plenty of information, but if you only need the available network interfaces, use the following customized IP command.
```
# ip a |awk '/state UP/{print $2}'
eth0:
eth1:
```
### 2) How to Check the IP Address of a Network Interface on Linux Using the IP Command
If you only want to see which IP address is assigned to which interface, use the following customized IP command.
```
# ip -o a show | cut -d ' ' -f 2,7
or
ip a |grep -i inet | awk '{print $7, $2}'
lo 127.0.0.1/8
192.168.1.101/24
192.168.1.102/24
```
### 3) How to Check the Network Interface Card MAC Address on Linux Using the IP Command
If you only want to see the network interface name and the corresponding MAC address, use the following format.
To check a specific network interface MAC address.
```
# ip link show dev eth0 |awk '/link/{print $2}'
00:00:00:55:43:5c
```
To check MAC address for all network interface.
```
# vi /opt/scripts/mac-addresses.sh
#!/bin/sh
ip a |awk '/state UP/{print $2}' | sed 's/://' | while read output;
do
echo $output:
ethtool -P $output
done
```
Run the below shell script to get the MAC address for multiple network interfaces.
```
# sh /opt/scripts/mac-addresses.sh
eth0:
Permanent address: 00:00:00:55:43:5c
eth1:
Permanent address: 00:00:00:55:43:5d
```
### 4) How to Check the Network Interface Port Speed on Linux Using the ethtool Command
If you want to check the network interface port speed on Linux, use the ethtool command.
To check the speed of a particular network interface port.
```
# ethtool eth0 |grep "Speed:"
Speed: 10000Mb/s
```
To check the port speed for all network interfaces.
```
# vi /opt/scripts/port-speed.sh
#!/bin/sh
ip a |awk '/state UP/{print $2}' | sed 's/://' | while read output;
do
echo $output:
ethtool $output |grep "Speed:"
done
```
Run the below shell script to get the port speed for multiple network interfaces.
```
# sh /opt/scripts/port-speed.sh
eth0:
Speed: 10000Mb/s
eth1:
Speed: 10000Mb/s
```
### 5) Shell Script to Verify Network Interface Card Information
This **[shell script][2]** allows you to gather all of the above information, such as network interface names, IP addresses of network interfaces, MAC addresses of network interfaces, and the speed of a network interface port.
```
# vi /opt/scripts/nic-info.sh
#!/bin/sh
hostname
echo "-------------"
for iname in $(ip a |awk '/state UP/{print $2}')
do
echo "$iname"
ip a | grep -A2 $iname | awk '/inet/{print $2}'
ip a | grep -A2 $iname | awk '/link/{print $2}'
ethtool $iname |grep "Speed:"
done
```
Run the below shell script to check network card information.