Browse Source

get all ips configured on an interface

master
Georg Hopp 12 years ago
parent
commit
625b767798
  1. 43
      gatherer/interface_information.sh

43
gatherer/interface_information.sh

@ -73,25 +73,34 @@ gather_if_info_ip() {
no=r_if_numbers[if_no]; no=r_if_numbers[if_no];
if ($3 == "inet") { if ($3 == "inet") {
split($4,addr,/[\/]/); split($4,addr,/[\/]/);
print "IF" no "_IPV4=\"${IF" no "_IPV4}" addr[1] " \";";
ipv4=ipv4 addr[1] " ";
network(no, addr[1], addr[2]); network(no, addr[1], addr[2]);
classes=classes addr[1] " " classes=classes addr[1] " "
} }
if ($3 == "inet6") { if ($3 == "inet6") {
split($4,addr,/[\/]/); split($4,addr,/[\/]/);
print "IF" no "_IPV6=\"${IF" no "_IPV6}" addr[1] " \";";
ipv6=ipv6 addr[1] " ";
classes=classes addr[1] " " classes=classes addr[1] " "
} }
} }
$1 != current_if {
print "IF" no "_IPV4=\"" ipv4 "\";";
print "IF" no "_IPV6=\"" ipv6 " \";";
print "IF" no "_NETWORK=\"" net "\";";
print "IF" no "_MASK=\"" mask "\";";
current_if=$1;
ipv6=ipv4="";
}
BEGIN { BEGIN {
classes=""; classes="";
sub(/^ */,"",if_numbers); sub(/^ */,"",if_numbers);
sub(/ *$/,"",if_numbers); sub(/ *$/,"",if_numbers);
split(if_numbers,tmp_array,/ /)
split(if_numbers,tmp_array,/ /);
for(no in tmp_array) { for(no in tmp_array) {
if_no=tmp_array[no]; if_no=tmp_array[no];
r_if_numbers[if_no]=no; r_if_numbers[if_no]=no;
} }
current_if=$1;
} }
END { END {
print "set_class " classes ";" print "set_class " classes ";"
@ -122,8 +131,8 @@ gather_if_info_ip() {
} }
} }
classes=classes net " "; classes=classes net " ";
print "IF" no "_NETWORK=\"" net "\"; export " name "_NETWORK;";
print "IF" no "_MASK=\"" mask "\"; export " name "_MASK;";
networks=networks net " ";
netmasks=netmasks mask " ";
}') }')
} }
@ -133,29 +142,39 @@ gather_if_info_ip() {
# #
gather_if_info_ifconfig() { gather_if_info_ifconfig() {
eval $(${IFCONFIG} -a | ${AWK} ' eval $(${IFCONFIG} -a | ${AWK} '
/ether/ { mac=$2 }
/inet / { ipv4=ipv4 $2 " " }
/inet6/ { ipv6=ipv6 $2 " " }
/ether/ { mac=$2 }
/inet / { ipv4=ipv4 $2 " "; classes=classes $2 " " }
/^[^ \t]/ { /^[^ \t]/ {
if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN";
if ("UP" == state) classes=classes mac " ";
if ("" != name) { if ("" != name) {
print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \
"IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \
"IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";";
no++; no++;
} }
ipv4=ipv6="";
ipv4=ipv6=mac="";
sub(/:/,"",$1); sub(/:/,"",$1);
name=$1
name=$1;
state="DOWN";
}
/inet6/ {
sub(/%.*/,"",$2);
ipv6=ipv6 $2 " ";
classes=classes $2 " "
} }
(/status/ && /active/) || /^lo[0-9]/ { state="UP" }
BEGIN { BEGIN {
classes="";
state="DOWN";
no=1; no=1;
mac="";
} }
END { END {
if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN";
if ("UP" == state) classes=classes mac " ";
print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \
"IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \
"IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";";
print "set_class " classes ";";
print "NINTERFACES=" no print "NINTERFACES=" no
}') }')
} }

Loading…
Cancel
Save