version 1.2, 2003/08/08 09:56:53 |
version 1.3, 2005/03/04 23:54:05 |
|
|
# ifconfig-parse.sh - parse output from ifconfig and print |
# ifconfig-parse.sh - parse output from ifconfig and print |
# in format suitable for eval in shell |
# in format suitable for eval in shell |
# |
# |
|
# FreeBSD and Linux are supported |
|
# |
# Developed by Lubommir Host 'rajo' <rajo AT platon.sk> |
# Developed by Lubommir Host 'rajo' <rajo AT platon.sk> |
# Copyright (c) 2003 Platon SDG |
# Copyright (c) 2003 Platon SDG |
# Licensed under terms of GNU General Public License. |
# Licensed under terms of GNU General Public License. |
# All rights reserved. |
# All rights reserved. |
# |
# |
|
|
# $Platon: scripts/shell/firewall/ifconfig-parse.sh,v 1.1 2003/08/07 08:33:42 rajo Exp $ |
# $Platon: scripts/shell/firewall/ifconfig-parse.sh,v 1.2 2003/08/08 09:56:53 rajo Exp $ |
|
|
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin |
|
export PATH |
|
|
# Parse output from ifconfig: |
# Parse output from ifconfig: |
/sbin/ifconfig | \ |
ifconfig | \ |
awk 'BEGIN { interfaces=""; } |
awk 'BEGIN { interfaces=""; } |
/^[a-zA-Z0-9]+[ \t]+/ { # Linux |
/^[a-zA-Z0-9]+[ \t]+/ { # Linux |
iface=$1; |
iface=$1; |
|
|
END { printf "\ninterfaces=\"%s\"; export interfaces;\n", interfaces; } |
END { printf "\ninterfaces=\"%s\"; export interfaces;\n", interfaces; } |
' |
' |
|
|
|
# |
|
# parse routing info on Linux (FreeBSD not supported yet) |
|
# |
|
# only "Gateway Destination Flags MTU Metric Window IRTT" columns are extracted from /proc/net/route: |
|
if [ "x`uname -s`" = "xLinux" ]; then |
|
|
|
perl -e ' |
|
$\ = "\n"; |
|
open(FILE, "/proc/net/route") or die "Cannot open /proc/net/route: $!"; |
|
my @columns = split(/\s+/, <FILE>); |
|
while (my $line = <FILE>) { |
|
my $iface; |
|
my @vals = split(/\s+/, $line); |
|
foreach my $key (@columns) { |
|
$iface->{$key} = shift @vals; |
|
} |
|
|
|
foreach my $key (qw( Gateway Destination )) { |
|
print "${key}_$iface->{Iface}=", |
|
qw("), hex2ip($iface->{$key}), qw("), |
|
"; export ${key}_$iface->{Iface};"; |
|
} |
|
foreach my $key (qw( Flags MTU Metric Window IRTT )) { |
|
print "${key}_$iface->{Iface}=", |
|
qw("), $iface->{$key}, qw("), |
|
"; export ${key}_$iface->{Iface};"; |
|
} |
|
} |
|
close(FILE); |
|
|
|
|
|
sub hex2ip |
|
{ # {{{ |
|
my ($str) = @_; |
|
my @block; |
|
|
|
my $hex = uc($str); |
|
|
|
while (length($hex)) { |
|
my $x = ord(substr($hex, 0, 1)); |
|
my $y = ord(substr($hex, 1, 1)); |
|
|
|
$x = $x > 64 ? $x - 55 : $x - 48; |
|
$y = $y > 64 ? $y - 55 : $y - 48; |
|
|
|
push @block, 16 * $x + $y; |
|
$hex = substr($hex, 2); |
|
} |
|
|
|
return join(".", reverse @block); |
|
|
|
} # }}} |
|
' |
|
|
|
fi |
|
|
|
# vim: ft=sh fdm=marker fdl=0 fdc=3 |
|
|