[Fedora] General Linux Networking

Bevan C. Bennett bevan at fulcrummicro.com
Thu Jan 8 00:29:16 UTC 2004


Bevan C. Bennett wrote:
 >
> It would be relatively trivial to create a small script which gathers 
> that data, reformats it, and prints a Windows-like 'ipconfig' style 
> summary.
> 

Just to prove that this is, in fact, possible... the following makes a 
passable imitation, for those interested in such things...

#!/usr/bin/perl
#
# 'ipconfig' like output - written as an experiment
# Jan 07, 2003 by Bevan Bennett (bevan at fulcrummicro.com)
#

open(IFINFO,'ifconfig|') || die "couldn't run ifconfig: $!\n";

%interfaces = ();
$current = "";
$hostname = $ENV{"HOSTNAME"};

while (<IFINFO>) {
   /^(\S+)\s+Link encap:Ethernet\s+HWaddr\s+(\S+)/ && do {
     $interfaces{$1}{"hwaddr"} = $2;
     $current = $1;
     next;
   };
   /^lo/ && do {
     $current = "";
     next;
   };
   next if (!$current);
   /inet addr:([\d\.]+)/ && do {$interfaces{$current}{"ipaddr"} = $1;};
   /Mask:([\d\.]+)/ && do {$interfaces{$current}{"mask"} = $1;};
}
close(IFINFO);

open (DNSINFO,'/etc/resolv.conf') || die "Can't open /etc/resolv.conf: 
$!\n";
while (<DNSINFO>) {
   /^domain (\S+)/ && do { $dnsdomain = $1; };
   /^search (.+)/ && do { @dnssearch = split / /,$1; };
   /^nameserver (\S+)/ && do { push @dnssrv,$1; };
}
close (DNSINFO);

open (ROUTEINFO,'netstat -rn|') || die "Can't run netstat: $!\n";
while (<ROUTEINFO>) {
   /0\.0\.0\.0\s+(\S+)\s+\S+\s+UG\s+\d+\s+\d+\s+\d+\s+(\S+)/ && do {
     $gateway = $1;
     $gateint = $2;
   };
}
close (ROUTEINFO);
 

print "Fedora Core IP Configuration\n\n";
print "       Host Name . . . . . . . . . . . . . : " . $hostname . "\n";
print "       Primary DNS Suffix. . . . . . . . . : " . $dnsdomain . "\n";
print "       DNS Suffix Search List. . . . . . . : " . 
shift(@dnssearch) . "\n";
while (@dnssearch) {
print "                                             " . 
shift(@dnssearch) . "\n";
}
print "       DNS Servers . . . . . . . . . . . . : " . shift(@dnssrv) . 
"\n";
while (@dnssrv) {
print "                                             " . shift(@dnssrv) . 
"\n";
}
print "       Default Gateway . . . . . . . . . . : " . $gateway . " ("
       . $gateint . ")\n";
print "\n";

foreach $if (keys(%interfaces)) {
print "Ethernet adapter Local Area Connection $if:\n\n";
print "       Physical Address. . . . . . . . . . : " . 
$interfaces{$if}{"hwaddr"} . "\n";
print "       IP Address. . . . . . . . . . . . . : " . 
$interfaces{$if}{"ipaddr"} . "\n";
print "       Subnet Mask . . . . . . . . . . . . : " . 
$interfaces{$if}{"mask"} . "\n";
print "\n";
}





More information about the fedora-list mailing list