Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, April 19, 2024

File: [Platon] / scripts / shell / firewall / ifconfig-parse.awk (download)

Revision 1.4, Thu Jan 12 19:28:46 2006 UTC (18 years, 3 months ago) by rajo


Changes since 1.3: +10 -7 lines

Parse also MAC address (HWaddr_eth0 etc.)

#!/usr/bin/awk -f

#
# ifconfig-parse.awk - parse output from ifconfig and print
#                      in format suitable for eval in shell
#
# Only Linux is supported, but *MULTIPLE* IP address per device.
#
# If you need parse ifconfig output on FreeBSD, use ifconfig-parse.sh
# script instead.
#
# Developed by Lubommir Host 'rajo' <rajo AT platon.sk>
# Copyright (c) 2006 Platon SDG
# Licensed under terms of GNU General Public License.
# All rights reserved.
#
# Changelog:
# 2006-01-12 - created
#

# $Platon: scripts/shell/firewall/ifconfig-parse.awk,v 1.3 2005/03/04 23:54:05 rajo Exp $

BEGIN {
    iface_count = 0;
}

/^[a-zA-Z0-9:]+[ \t]+/ { # Linux interface
    split($1, fields, ":");
    iface = fields[1];
    ipcount[iface]++;
    hwaddr[iface] = $NF;
    iface_count++;
}

/^[ \t]+inet addr:/ { # Linux IP address
    split($0, fields, "[ \t:]+");
    ip[iface, ipcount[iface]] = fields[4];
    bcast[iface] = fields[6]; # bad for loopback interface, but we don't need this
    idx = length(fields);
    mask[iface] = fields[idx];
}

/^[ \t]+inet6 addr:/ { # Linux IPv6 address
    split($0, fields, "[ \t]+");
    ip6[iface] = fields[4];
    scope6[iface] = fields[5];
}

END {
    for (i in ip6)        { printf "IFACE_6_%s=\"%s\";    export IFACE_6_%s;\n",    i, ip6[i],        i; }
    for (i in scope6)    { printf "SCOPE_6_%s=\"%s\";    export SCOPE_6_%s;\n",    i, scope6[i],    i; }
    for (i in bcast)    { printf "Bcast_%s=\"%s\";        export Bcast_%s;\n",    i, bcast[i],    i; }
    for (i in mask)        { printf "Mask_%s=\"%s\";        export Mask_%s;\n",        i, mask[i],        i; }
    for (i in hwaddr)    { printf "HWaddr_%s=\"%s\";        export HWaddr_%s;\n",    i, hwaddr[i],    i; }
    for (i in ipcount)    { printf "IPcount_%s=\"%s\";    export IPcount_%s;\n",    i, ipcount[i],    i; }
    for (i in ipcount) {
        printf "IP_%s=\"", i;
        for (n = 1; n <= ipcount[i]; n++) {
            printf "%s ", ip[i, n];
        }
        printf "\";    export IP_%s;\n", i;
    }
    printf "interfaces=\"";
    for (i in ipcount) { printf "%s ", i; }
    printf "\";     export interfaces;\n";
}


Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top