Shell Script For Collecting Information on the Linux Network Configuration

This shell script is tested under CentOS / RHEL and Fedora Linux. It should also work under other Linux distributions. If you would like to collect and submit information on your network configuration to your sr. Linux / UNIX admin use this script.

#!/bin/bash
# A Linux Shell script to collect information on your network configuration.
# -------------------------------------------------------------------------
# Copyright (c) 2003 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# Last updated: Jun-03-2009
# -------------------------------------------------------------------------
HWINF=/usr/sbin/hwinfo
IFCFG=/sbin/ifconfig
IP4FW=/sbin/iptables
IP6FW=/sbin/ip6tables
LSPCI=/sbin/lspci
ROUTE=/sbin/route
NETSTAT=/bin/netstat
LSB=/usr/bin/lsb_release
 
## files ##
DNSCLIENT="/etc/resolv.conf"
DRVCONF="/etc/modprobe.conf"
NETALIASCFC="/etc/sysconfig/network-scripts/ifcfg-eth?-range?"
NETCFC="/etc/sysconfig/network-scripts/ifcfg-eth?"
NETSTATICROUTECFC="/etc/sysconfig/network-scripts/route-eth?"
SYSCTL="/etc/sysctl.conf"
 
## Output file ##
OUTPUT="network.$(date +'%d-%m-%y').info.txt"
 
## Email info to?? ##
SUPPORT_ID="you@example.com"
 
chk_root(){
	local meid=$(id -u)
	if [ $meid -ne 0 ];
	then
		echo "You must be root user to run this tool"
		exit 999
	fi
}
 
write_header(){
	echo "---------------------------------------------------" >> $OUTPUT
	echo "$@" >> $OUTPUT
	echo "---------------------------------------------------"  >> $OUTPUT
}
 
 
dump_info(){
	echo "* Hostname: $(hostname)" >$OUTPUT
	echo "* Run date and time: $(date)" >>$OUTPUT
 
	write_header "Linux Distro"
	echo "Linux kernel: $(uname -mrs)" >>$OUTPUT
	$LSB -a >> $OUTPUT	
 
	[ -x ${HWINF} ] && write_header "${HWINF} --network_ctrl"
	[ -x ${HWINF} ] && ${HWINF} --network_ctrl >> $OUTPUT
 
	[ -x ${HWINF} ] && write_header "${HWINF} --isapnp"
	[ -x ${HWINF} ] && ${HWINF} --isapnp >> $OUTPUT
 
	write_header "PCI Devices"
	${LSPCI} -v >> $OUTPUT
 
	write_header "$IFCFG Output"
	$IFCFG >> $OUTPUT
 
	write_header "Kernel Routing Table"
	$ROUTE -n >> $OUTPUT
 
	write_header "Network Card Drivers Configuration $DRVCONF"
	[ -f $DRVCONF ] && grep eth $DRVCONF  >> $OUTPUT || echo "Error $DRVCONF file not found."  >> $OUTPUT
 
	write_header "DNS Client $DNSCLIENT Configuration"
	[ -f $DNSCLIENT ] && cat $DNSCLIENT >> $OUTPUT || echo "Error $DNSCLIENT file not found." >> $OUTPUT
 
	write_header "Network Configuration File"
	for f in $NETCFC
	do
		if [ -f $f ]
		then
			echo "** $f **" >> $OUTPUT
			cat $f >> $OUTPUT
		else
			echo "Error $f not found." >> $OUTPUT
		fi
	done 
 
	write_header "Network Aliase File"
	for f in $NETALIASCFC
	do
		if [ -f $f ]
		then
			echo "** $f **" >> $OUTPUT
			cat $f >> $OUTPUT
		else
			echo "Error $f not found." >> $OUTPUT
		fi
	done 
 
 
	write_header "Network Static Routing Configuration"
	for f in $NETSTATICROUTECFC
	do
		if [ -f $f ]
		then
			echo "** $f **" >> $OUTPUT
			cat $f >> $OUTPUT
		else
			echo "Error $f not found." >> $OUTPUT
		fi
	done 
 
	write_header "IP4 Firewall Configuration"
	$IP4FW -L -n >> $OUTPUT
 
	write_header "IP6 Firewall Configuration"
	$IP6FW -L -n  >> $OUTPUT
 
	write_header "Network Stats"
	$NETSTAT -s >> $OUTPUT
 
	write_header "Network Tweaks via $SYSCTL"
	[ -f $SYSCTL ] && cat $SYSCTL >> $OUTPUT || echo "Error $SYSCTL not found." >>$OUTPUT
 
	echo "The Network Configuration Info Written To $OUTPUT. Please email this file to $SUPPORT_ID."
}
 
chk_root
dump_info
Get the latest tutorials on SysAdmin, Linux/Unix, Open Source, and DevOps topics:
CategoryList of Unix and Linux commands
File Management cat
Firewall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilities dig host ip nmap
OpenVPN CentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Manager apk apt
Processes Management bg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searching grep whereis which
User Information groups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPN CentOS 8 Debian 10 Firewall Ubuntu 20.04
13 comments… add one
  • A.C. Oct 24, 2012 @ 7:25

    Thanks for the great scripts… I’m currently trying to up my skills on shell programming and these are extremely useful and very cleanly written. Please keep them coming!

  • andrei Oct 25, 2010 @ 0:22

    same like dustin..

  • explorer May 11, 2010 @ 8:47

    i love this scrips

  • dustin Dec 9, 2009 @ 0:19

    I recieved this when running the script,,,,,The Network Configuration Info Written To network.08-12-09.info.txt. Please email this file to

    im using Centos 5.3

  • Georg Oct 29, 2009 @ 13:55

    Hi.

    This is a very good script. I modified it, because i needed an output of “dmidecode”. I thought it’s useful…

    Georg

  • boy Oct 20, 2009 @ 7:11

    good day,vivek.

    I am currently developing a project that is similar to ftp by using shell script.In my project,I try to implement one replication technique called Read-One-Write-All (ROWA).Do you have any idea how to develop the sourcecode or if possible,any similar project that I could refer to.
    Thank you.

  • Jeff Sep 22, 2009 @ 11:30

    This a great script!!!

    I but one more line, to send email

    cat “$OUTPUT” | mail $SUPPORT_ID -s “The Network Configuration Info $(hostname)”

  • abhi Sep 9, 2009 @ 22:35

    what a script man…..lovely….hats off to the writer….

  • Kevin Hatfield Sep 3, 2009 @ 5:10

    Most excellent site! More FreeBSD stuff please :))

  • adhitya christiawan nurprasetyo Aug 3, 2009 @ 18:37

    agree! this website shared a lot of great infos :)

  • innqubus Jul 21, 2009 @ 10:03

    Awesome script dude… Thanks a ton. This one’s so useful.

  • Susinthiran Jul 14, 2009 @ 9:47

    Hi, Vivek.
    Just wanted to say i like reading your articles and other info on this site.
    You and Dag Weeirs are the super gurus of RHEL/CentOS that i know about :)))

    B.R
    Susinthiran
    Oslo/Norway

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.