#!/bin/bash # # Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Function to display information for each network interface display_interface_info() { interface=$1 echo "Interface: $interface" # Check if interface is up if ip link show "$interface" | grep -q 'state UP'; then echo " Status: UP" else echo " Status: DOWN" fi # Get and display the IPv4 address ipv4_address=$(ip -4 addr show "$interface" | grep -oP '(?<=inet\s)\d+(\.\d+){3}') [ -z "$ipv4_address" ] && ipv4_address="N/A" echo " IPv4 Address: $ipv4_address" # Get and display the IPv6 address ipv6_address=$(ip -6 addr show "$interface" | grep -oP '(?<=inet6\s)[a-f0-9:]+') [ -z "$ipv6_address" ] && ipv6_address="N/A" echo " IPv6 Address: $ipv6_address" # Get and display the subnet mask subnet_mask=$(ifconfig "$interface" | grep -oP '(?<=Mask:)[0-9.]+') [ -z "$subnet_mask" ] && subnet_mask="N/A" echo " Subnet Mask: $subnet_mask" # Get and display the MAC address mac_address=$(ip link show "$interface" | grep -oP '(?<=ether\s)[a-f0-9:]+') [ -z "$mac_address" ] && mac_address="N/A" echo " MAC Address: $mac_address" } # Get a list of all network interfaces interfaces=$(ip link show | grep -oP '(?<=^\d: )[e-w]+[0-9a-zA-Z-]+') # Iterate over each interface and display relevant information for intf in "$interfaces"; do display_interface_info "$intf" echo "" done # Get and display the default gateway default_gateway=$(ip route | grep default | awk '{print $3}') [ -z "$default_gateway" ] && default_gateway="N/A" echo "Default Gateway: $default_gateway" # Get and display the DNS server information mapfile -t dns_servers < <(grep nameserver /etc/resolv.conf | awk '{print $2}') if [ ${#dns_servers[@]} -eq 0 ]; then echo "DNS Servers: N/A" else echo "DNS Servers: ${dns_servers[*]}" fi echo # Check if Internet is available echo "Checking Internet availability..." if ping -c 1 8.8.8.8 &>/dev/null; then echo "Internet is available" else echo "Internet is not available" fi