≡ Menu

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 
# 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
{ 13 comments… add one }
  • A.C. October 24, 2012, 7:25 am

    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 October 25, 2010, 12:22 am

    same like dustin..

  • explorer May 11, 2010, 8:47 am

    i love this scrips

  • dustin December 9, 2009, 12:19 am

    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 October 29, 2009, 1:55 pm

    Hi.

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

    Georg

  • boy October 20, 2009, 7:11 am

    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 September 22, 2009, 11:30 am

    This a great script!!!

    I but one more line, to send email

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

  • abhi September 9, 2009, 10:35 pm

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

  • Kevin Hatfield September 3, 2009, 5:10 am

    Most excellent site! More FreeBSD stuff please :))

  • adhitya christiawan nurprasetyo August 3, 2009, 6:37 pm

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

  • innqubus July 21, 2009, 10:03 am

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

  • Susinthiran July 14, 2009, 9:47 am

    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

    • Vivek Gite July 14, 2009, 10:20 am

      Thanks for kind words :D

Security: Are you a robot or human?

Leave a Comment