verzia 1.3, 2006/01/12 19:06:36 |
verzia 1.4, 2006/01/12 19:28:46 |
|
|
#!/usr/bin/awk -v FS="[: \t]+" -f |
#!/usr/bin/awk -f |
|
|
# |
# |
# ifconfig-parse.awk - parse output from ifconfig and print |
# ifconfig-parse.awk - parse output from ifconfig and print |
|
|
|
|
BEGIN { |
BEGIN { |
iface_count = 0; |
iface_count = 0; |
SUBSEP = ":"; |
|
} |
} |
|
|
/^[a-zA-Z0-9:]+[ \t]+/ { # Linux |
/^[a-zA-Z0-9:]+[ \t]+/ { # Linux interface |
iface = $1; |
split($1, fields, ":"); |
|
iface = fields[1]; |
ipcount[iface]++; |
ipcount[iface]++; |
|
hwaddr[iface] = $NF; |
iface_count++; |
iface_count++; |
} |
} |
|
|
/^[ \t]+inet addr:/ { # Linux |
/^[ \t]+inet addr:/ { # Linux IP address |
split($0, fields, "[ \t:]+"); |
split($0, fields, "[ \t:]+"); |
ip[iface, ipcount[iface]] = fields[4]; |
ip[iface, ipcount[iface]] = fields[4]; |
bcast[iface] = fields[6]; # bad for loopback interface, but we don't need this |
bcast[iface] = fields[6]; # bad for loopback interface, but we don't need this |
mask[iface] = fields[NF]; |
idx = length(fields); |
|
mask[iface] = fields[idx]; |
} |
} |
|
|
/^[ \t]+inet6 addr:/ { # Linux |
/^[ \t]+inet6 addr:/ { # Linux IPv6 address |
split($0, fields, "[ \t]+"); |
split($0, fields, "[ \t]+"); |
ip6[iface] = fields[4]; |
ip6[iface] = fields[4]; |
scope6[iface] = fields[5]; |
scope6[iface] = fields[5]; |
|
|
for (i in scope6) { printf "SCOPE_6_%s=\"%s\"; export SCOPE_6_%s;\n", i, scope6[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 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 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 "IPcount_%s=\"%s\"; export IPcount_%s;\n", i, ipcount[i], i; } |
for (i in ipcount) { |
for (i in ipcount) { |
printf "IP_%s=\"", i; |
printf "IP_%s=\"", i; |