Commit 86fa5b810af641a5e53edbd26571ec84889fe065
1 parent
b382bfa3
seperate original script in several of special purpose and implement some kind o…
…f include_once for sourcing scripts only once
Showing
5 changed files
with
352 additions
and
209 deletions
interface_information.sh
0 → 100755
| 1 | +#!/bin/dash | ||
| 2 | + | ||
| 3 | +## | ||
| 4 | +# This creates function that will gather some system informations | ||
| 5 | +# and propagate them as environment variables. | ||
| 6 | +# | ||
| 7 | + | ||
| 8 | +. ./utils.sh | ||
| 9 | + | ||
| 10 | +## | ||
| 11 | +# retrieve interfaces. I prefer using ip if it is | ||
| 12 | +# available, else I fallback to ifconfig... don't know | ||
| 13 | +# how to retrieve this information on other systems. | ||
| 14 | +# This also exports the environment variables. | ||
| 15 | +# | ||
| 16 | +get_interface_data() { | ||
| 17 | + local NO=1 | ||
| 18 | + | ||
| 19 | + if [ ${IP} ] | ||
| 20 | + then | ||
| 21 | + get_interface_data_ip | ||
| 22 | + else | ||
| 23 | + if [ ${IFCONFIG} ] | ||
| 24 | + then | ||
| 25 | + get_interface_data_ifconfig | ||
| 26 | + else | ||
| 27 | + ${LOGGER} -p local0.warn 'Found no way to retrieve interface information.' | ||
| 28 | + fi | ||
| 29 | + fi | ||
| 30 | + | ||
| 31 | + export NINTERFACES | ||
| 32 | + export CLASSES | ||
| 33 | + | ||
| 34 | + while [ ${NO} -le ${NINTERFACES:=0} ] | ||
| 35 | + do | ||
| 36 | + export IF${NO}_NAME IF${NO}_MAC IF${NO}_STATE IF${NO}_IPV4 IF${NO}_IPV6 | ||
| 37 | + NO=$((NO+1)) | ||
| 38 | + done | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +## | ||
| 42 | +# get the interface information from the ip tool | ||
| 43 | +# | ||
| 44 | +get_interface_data_ip() { | ||
| 45 | + eval $(${IP} -o link | ${AWK} '{ | ||
| 46 | + sub(/:/,"",$1); | ||
| 47 | + no=$1; | ||
| 48 | + sub(/:/,"",$2); | ||
| 49 | + name=$2; | ||
| 50 | + for (i=3; i<NF; i++) { | ||
| 51 | + if ($i == "state") { | ||
| 52 | + i++; state=$i | ||
| 53 | + } | ||
| 54 | + if ($i ~ /link/) { | ||
| 55 | + i++; mac=$i; | ||
| 56 | + classes=classes mac " " | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";"; | ||
| 60 | + if ("UP" == state) classes=classes mac " " | ||
| 61 | + } | ||
| 62 | + BEGIN { | ||
| 63 | + classes="" | ||
| 64 | + } | ||
| 65 | + END { | ||
| 66 | + print "CLASSES=\"${CLASSES}" classes " \";"; | ||
| 67 | + print "NINTERFACES=" FNR ";" | ||
| 68 | + }') | ||
| 69 | + | ||
| 70 | + eval $(${IP} -o addr | ${AWK} '{ | ||
| 71 | + sub(/:/,"",$1); | ||
| 72 | + no=$1; | ||
| 73 | + if ($3 == "inet") { | ||
| 74 | + sub(/[\/%].*/,"",$4); | ||
| 75 | + print "IF" no "_IPV4=\"${IF" no "_IPV4}" $4 " \";"; | ||
| 76 | + classes=classes $4 " " | ||
| 77 | + } | ||
| 78 | + if ($3 == "inet6") { | ||
| 79 | + sub(/[\/%].*/,"",$4); | ||
| 80 | + print "IF" no "_IPV6=\"${IF" no "_IPV6}" $4 " \";"; | ||
| 81 | + classes=classes $4 " " | ||
| 82 | + } | ||
| 83 | + } | ||
| 84 | + BEGIN { | ||
| 85 | + classes="" | ||
| 86 | + } | ||
| 87 | + END { | ||
| 88 | + print "CLASSES=\"${CLASSES}" classes " \";" | ||
| 89 | + }') | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | +## | ||
| 93 | +# get interface data via the ifconfig tool | ||
| 94 | +# | ||
| 95 | +get_interface_data_ifconfig() { | ||
| 96 | + eval $(${IFCONFIG} -a | ${AWK} ' | ||
| 97 | + /ether/ { mac=$2 } | ||
| 98 | + /inet / { ipv4=ipv4 $2 " " } | ||
| 99 | + /inet6/ { ipv6=ipv6 $2 " " } | ||
| 100 | + /^[^ \t]/ { | ||
| 101 | + if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | ||
| 102 | + if ("" != name) { | ||
| 103 | + print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | ||
| 104 | + "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | ||
| 105 | + "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | ||
| 106 | + no++; | ||
| 107 | + } | ||
| 108 | + ipv4=ipv6=""; | ||
| 109 | + sub(/:/,"",$1); | ||
| 110 | + name=$1 | ||
| 111 | + } | ||
| 112 | + BEGIN { | ||
| 113 | + no=1; | ||
| 114 | + } | ||
| 115 | + END { | ||
| 116 | + if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | ||
| 117 | + print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | ||
| 118 | + "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | ||
| 119 | + "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | ||
| 120 | + print "NINTERFACES=" no | ||
| 121 | + }') | ||
| 122 | +} | ||
| 123 | + | ||
| 124 | +## | ||
| 125 | +# autorun this if sourced. | ||
| 126 | +# | ||
| 127 | + | ||
| 128 | +[ -z "${NINTERFACES}" ] && get_interface_data | ||
| 129 | + | ||
| 130 | +# vim: set ts=4 sw=4: |
network_tools.sh
0 → 100755
| 1 | +#!/bin/dash | ||
| 2 | + | ||
| 3 | +. ./utils.sh | ||
| 4 | + | ||
| 5 | +## | ||
| 6 | +# Function calculates number of bit in a netmask | ||
| 7 | +# | ||
| 8 | +mask2cidr() { | ||
| 9 | + local NBITS=0 | ||
| 10 | + local OLDIFS="${IFS}" | ||
| 11 | + IFS=. | ||
| 12 | + | ||
| 13 | + for DEC in $1 | ||
| 14 | + do | ||
| 15 | + case ${DEC} in | ||
| 16 | + 255) NBITS=$((NBITS+8));; | ||
| 17 | + 254) NBITS=$((NBITS+7));; | ||
| 18 | + 252) NBITS=$((NBITS+6));; | ||
| 19 | + 248) NBITS=$((NBITS+5));; | ||
| 20 | + 240) NBITS=$((NBITS+4));; | ||
| 21 | + 224) NBITS=$((NBITS+3));; | ||
| 22 | + 192) NBITS=$((NBITS+2));; | ||
| 23 | + 128) NBITS=$((NBITS+1));; | ||
| 24 | + 0);; | ||
| 25 | + *) NBITS=0; IFS="${OLDIFS}"; return 1 | ||
| 26 | + esac | ||
| 27 | + done | ||
| 28 | + IFS="${OLDIFS}" | ||
| 29 | + ${ECHO} "${NBITS}" | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +## | ||
| 33 | +# Function calculates a netmask from number of bits | ||
| 34 | +# | ||
| 35 | +cidr2mask() { | ||
| 36 | + local I MASK="" | ||
| 37 | + local FULL_OCTETS=$((${1}/8)) | ||
| 38 | + local PARTIAL_OCTET=$((${1}%8)) | ||
| 39 | + | ||
| 40 | + for I in 0 1 2 3 | ||
| 41 | + do | ||
| 42 | + if [ ${I} -lt ${FULL_OCTETS} ] | ||
| 43 | + then | ||
| 44 | + MASK="${MASK}255" | ||
| 45 | + elif [ ${I} -eq ${FULL_OCTETS} ] | ||
| 46 | + then | ||
| 47 | + MASK="${MASK}$((256-(1<<(8-${PARTIAL_OCTET}))))" | ||
| 48 | + else | ||
| 49 | + MASK="${MASK}0" | ||
| 50 | + fi | ||
| 51 | + [ ${I} -lt 3 ] && MASK="${MASK}." | ||
| 52 | + done | ||
| 53 | + | ||
| 54 | + ${ECHO} ${MASK} | ||
| 55 | +} | ||
| 56 | + | ||
| 57 | +# vim: set ts=4 sw=4: |
run.sh
0 → 100755
| 1 | +#!/bin/dash | ||
| 2 | + | ||
| 3 | +## | ||
| 4 | +# This is a first test what static informations I can gather from a | ||
| 5 | +# system. The minimal requirement are the IP addresses because | ||
| 6 | +# on these I build up my classes. | ||
| 7 | +# The system type is also important...we might need to be running | ||
| 8 | +# on variuous UNIX flavours. (But for now we focus on various linux | ||
| 9 | +# flavours and maybe FreeBSD. | ||
| 10 | +# | ||
| 11 | + | ||
| 12 | +. ./utils.sh | ||
| 13 | +include_once ./system_information.sh | ||
| 14 | +include_once ../sysman/interface_information.sh | ||
| 15 | +include_once /home/ghopp/sysman/network_tools.sh | ||
| 16 | + | ||
| 17 | +## | ||
| 18 | +# report everysthing | ||
| 19 | +# | ||
| 20 | + | ||
| 21 | +${PRINTF} "%15s : %s\n" "OS" "${OS}" | ||
| 22 | +${PRINTF} "%15s : %s\n" "KERNEL" "${KERNEL}" | ||
| 23 | +${PRINTF} "%15s : %s\n" "VERSION" "${VERSION}" | ||
| 24 | +${PRINTF} "%15s : %s\n" "PLATFORM" "${PLATFORM}" | ||
| 25 | +${PRINTF} "%15s : %s\n" "DIST" "${DIST}" | ||
| 26 | +${PRINTF} "%15s : %s\n" "HOSTNAME" "${HOSTNAME}" | ||
| 27 | +${PRINTF} "%15s : %s\n" "# INTERFACES" "${NINTERFACES}" | ||
| 28 | + | ||
| 29 | +NO=1 | ||
| 30 | +while [ ${NO} -le ${NINTERFACES:=0} ] | ||
| 31 | +do | ||
| 32 | + eval printf \"%15s : %s\\\n\" \"IF${NO}_NAME\" \"\${IF${NO}_NAME}\" | ||
| 33 | + eval printf \"%15s : %s\\\n\" \"IF${NO}_MAC\" \"\${IF${NO}_MAC}\" | ||
| 34 | + eval printf \"%15s : %s\\\n\" \"IF${NO}_STATE\" \"\${IF${NO}_STATE}\" | ||
| 35 | + eval printf \"%15s : %s\\\n\" \"IF${NO}_IPV4\" \"\${IF${NO}_IPV4}\" | ||
| 36 | + eval printf \"%15s : %s\\\n\" \"IF${NO}_IPV6\" \"\${IF${NO}_IPV6}\" | ||
| 37 | + NO=$((NO+1)) | ||
| 38 | +done | ||
| 39 | + | ||
| 40 | +${PRINTF} "%15s : %s\n" "CLASSES" "${CLASSES}" | ||
| 41 | + | ||
| 42 | +echo | ||
| 43 | +echo $(mask2cidr 255.255.128.0) | ||
| 44 | +echo $(cidr2mask 17) | ||
| 45 | +eval echo \$\(cidr2mask $(mask2cidr 255.255.128.0)\) | ||
| 46 | + |
| 1 | #!/bin/dash | 1 | #!/bin/dash |
| 2 | 2 | ||
| 3 | ## | 3 | ## |
| 4 | -# This is a first test what static informations I can gather from a | ||
| 5 | -# system. The minimal requirement are the IP addresses because | ||
| 6 | -# on these I build up my classes. | ||
| 7 | -# The system type is also important...we might need to be running | ||
| 8 | -# on variuous UNIX flavours. (But for now we focus on various linux | ||
| 9 | -# flavours and maybe FreeBSD. | 4 | +# This creates function that will gather some system informations |
| 5 | +# and propagate them as environment variables. | ||
| 10 | # | 6 | # |
| 11 | 7 | ||
| 12 | - | ||
| 13 | -# Function calculates number of bit in a netmask | ||
| 14 | -# | ||
| 15 | -mask2cidr() { | ||
| 16 | - local NBITS=0 | ||
| 17 | - local OLDIFS="${IFS}" | ||
| 18 | - IFS=. | ||
| 19 | - | ||
| 20 | - for DEC in $1 | ||
| 21 | - do | ||
| 22 | - case ${DEC} in | ||
| 23 | - 255) NBITS=$((NBITS+8));; | ||
| 24 | - 254) NBITS=$((NBITS+7));; | ||
| 25 | - 252) NBITS=$((NBITS+6));; | ||
| 26 | - 248) NBITS=$((NBITS+5));; | ||
| 27 | - 240) NBITS=$((NBITS+4));; | ||
| 28 | - 224) NBITS=$((NBITS+3));; | ||
| 29 | - 192) NBITS=$((NBITS+2));; | ||
| 30 | - 128) NBITS=$((NBITS+1));; | ||
| 31 | - 0);; | ||
| 32 | - *) NBITS=0; IFS="${OLDIFS}"; return 1 | ||
| 33 | - esac | ||
| 34 | - done | ||
| 35 | - IFS="${OLDIFS}" | ||
| 36 | - ${ECHO} "${NBITS}" | ||
| 37 | -} | ||
| 38 | - | ||
| 39 | -cidr2mask() { | ||
| 40 | - local MASK="" | ||
| 41 | - local FULL_OCTETS=$((${1}/8)) | ||
| 42 | - local PARTIAL_OCTET=$((${1}%8)) | ||
| 43 | - | ||
| 44 | - for I in 0 1 2 3 | ||
| 45 | - do | ||
| 46 | - if [ ${I} -lt ${FULL_OCTETS} ] | ||
| 47 | - then | ||
| 48 | - MASK="${MASK}255" | ||
| 49 | - elif [ ${I} -eq ${FULL_OCTETS} ] | ||
| 50 | - then | ||
| 51 | - MASK="${MASK}$((256-(1<<(8-${PARTIAL_OCTET}))))" | ||
| 52 | - else | ||
| 53 | - MASK="${MASK}0" | ||
| 54 | - fi | ||
| 55 | - ${TEST} ${I} -lt 3 && MASK="${MASK}." | ||
| 56 | - done | ||
| 57 | - | ||
| 58 | - ${ECHO} ${MASK} | ||
| 59 | -} | ||
| 60 | - | ||
| 61 | -## | ||
| 62 | -# retrieve interfaces. I prefer using ip if it is | ||
| 63 | -# available, else I fallback to ifconfig... don't know | ||
| 64 | -# how to retrieve this information on other systems. | ||
| 65 | -# | ||
| 66 | -get_if_data() { | ||
| 67 | - if [ ${IP} ] | ||
| 68 | - then | ||
| 69 | - eval $(${IP} -o link | ${AWK} '{ | ||
| 70 | - sub(/:/,"",$1); | ||
| 71 | - no=$1; | ||
| 72 | - sub(/:/,"",$2); | ||
| 73 | - name=$2; | ||
| 74 | - for (i=3; i<NF; i++) { | ||
| 75 | - if ($i == "state") { | ||
| 76 | - i++; state=$i | ||
| 77 | - } | ||
| 78 | - if ($i ~ /link/) { | ||
| 79 | - i++; mac=$i; | ||
| 80 | - classes=classes mac " " | ||
| 81 | - } | ||
| 82 | - } | ||
| 83 | - print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";"; | ||
| 84 | - if ("UP" == state) classes=classes mac " " | ||
| 85 | - } | ||
| 86 | - BEGIN { | ||
| 87 | - classes="" | ||
| 88 | - } | ||
| 89 | - END { | ||
| 90 | - print "CLASSES=\"${CLASSES}" classes " \";"; | ||
| 91 | - print "NINTERFACES=" FNR ";" | ||
| 92 | - }') | ||
| 93 | - | ||
| 94 | - eval $(${IP} -o addr | ${AWK} '{ | ||
| 95 | - sub(/:/,"",$1); | ||
| 96 | - no=$1; | ||
| 97 | - if ($3 == "inet") { | ||
| 98 | - sub(/[\/%].*/,"",$4); | ||
| 99 | - print "IF" no "_IPV4=\"${IF" no "_IPV4}" $4 " \";"; | ||
| 100 | - classes=classes $4 " " | ||
| 101 | - } | ||
| 102 | - if ($3 == "inet6") { | ||
| 103 | - sub(/[\/%].*/,"",$4); | ||
| 104 | - print "IF" no "_IPV6=\"${IF" no "_IPV6}" $4 " \";"; | ||
| 105 | - classes=classes $4 " " | ||
| 106 | - } | ||
| 107 | - } | ||
| 108 | - BEGIN { | ||
| 109 | - classes="" | ||
| 110 | - } | ||
| 111 | - END { | ||
| 112 | - print "CLASSES=\"${CLASSES}" classes " \";" | ||
| 113 | - }') | ||
| 114 | - else | ||
| 115 | - if [ ${IFCONFIG} ] | ||
| 116 | - then | ||
| 117 | - #eval $(${IFCONFIG} -a | ${AWK} '{ | ||
| 118 | - eval $(ifconfig -a | awk ' | ||
| 119 | - /ether/ { mac=$2 } | ||
| 120 | - /inet / { ipv4=ipv4 $2 " " } | ||
| 121 | - /inet6/ { ipv6=ipv6 $2 " " } | ||
| 122 | - /^[^ \t]/ { | ||
| 123 | - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | ||
| 124 | - if ("" != name) { | ||
| 125 | - print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | ||
| 126 | - "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | ||
| 127 | - "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | ||
| 128 | - no++; | ||
| 129 | - } | ||
| 130 | - ipv4=ipv6=""; | ||
| 131 | - sub(/:/,"",$1); | ||
| 132 | - name=$1 | ||
| 133 | - } | ||
| 134 | - BEGIN { | ||
| 135 | - no=1; | ||
| 136 | - } | ||
| 137 | - END { | ||
| 138 | - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | ||
| 139 | - print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | ||
| 140 | - "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | ||
| 141 | - "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | ||
| 142 | - print "NINTERFACES=" no | ||
| 143 | - }') | ||
| 144 | - else | ||
| 145 | - ${LOGGER} -p local0.warn 'Found no way to retrieve interface information.' | ||
| 146 | - fi | ||
| 147 | - fi | ||
| 148 | -} | 8 | +. ./utils.sh |
| 149 | 9 | ||
| 150 | ## | 10 | ## |
| 151 | -# start guessing the system type | ||
| 152 | -# 1. get informations via uname | 11 | +# start guessing the system type via uname and export it. |
| 153 | # | 12 | # |
| 154 | get_host_info() { | 13 | get_host_info() { |
| 155 | OS="$(${UNAME} -o)" | 14 | OS="$(${UNAME} -o)" |
| @@ -159,6 +18,8 @@ get_host_info() { | @@ -159,6 +18,8 @@ get_host_info() { | ||
| 159 | HOSTNAME="$(${UNAME} -n)" | 18 | HOSTNAME="$(${UNAME} -n)" |
| 160 | CLASSES="$(${ECHO} -e "${OS}\n${KERNEL}\n${VERSION}\n${PLATFORM}\n${HOSTNAME}" |\ | 19 | CLASSES="$(${ECHO} -e "${OS}\n${KERNEL}\n${VERSION}\n${PLATFORM}\n${HOSTNAME}" |\ |
| 161 | ${SORT} -u | ${TR} "\n" " ")" | 20 | ${SORT} -u | ${TR} "\n" " ")" |
| 21 | + | ||
| 22 | + export OS KERNEL VERSION PLATFORM HOSTNAME CLASSES | ||
| 162 | } | 23 | } |
| 163 | 24 | ||
| 164 | ## | 25 | ## |
| @@ -186,10 +47,7 @@ get_host_info() { | @@ -186,10 +47,7 @@ get_host_info() { | ||
| 186 | # the file. | 47 | # the file. |
| 187 | # | 48 | # |
| 188 | get_dist_info() { | 49 | get_dist_info() { |
| 189 | - if [ -z "${KERNEL}" ] | ||
| 190 | - then | ||
| 191 | - get_host_info | ||
| 192 | - fi | 50 | + [ -z "${KERNEL}" ] && get_host_info |
| 193 | 51 | ||
| 194 | if [ "Linux" = "${KERNEL}" ] | 52 | if [ "Linux" = "${KERNEL}" ] |
| 195 | then | 53 | then |
| @@ -229,7 +87,7 @@ get_dist_info() { | @@ -229,7 +87,7 @@ get_dist_info() { | ||
| 229 | 87 | ||
| 230 | for DIR in ${FILES} | 88 | for DIR in ${FILES} |
| 231 | do | 89 | do |
| 232 | - ${TEST} -f ${DIR} || CHK=$((CHK&~CUR)) | 90 | + [ -f ${DIR} ] || CHK=$((CHK&~CUR)) |
| 233 | done | 91 | done |
| 234 | 92 | ||
| 235 | CUR=$((CUR*2)) | 93 | CUR=$((CUR*2)) |
| @@ -237,16 +95,16 @@ get_dist_info() { | @@ -237,16 +95,16 @@ get_dist_info() { | ||
| 237 | 95 | ||
| 238 | DIST="Unknown" | 96 | DIST="Unknown" |
| 239 | 97 | ||
| 240 | - ${TEST} ${CHK} -eq ${SUSE} && DIST="Suse" | ||
| 241 | - ${TEST} ${CHK} -eq ${REDHAT} && DIST="Redhat" | ||
| 242 | - ${TEST} ${CHK} -eq ${FEDORA} && DIST="Fedora" | ||
| 243 | - ${TEST} ${CHK} -eq ${SLACKWARE} && DIST="Slakware" | ||
| 244 | - ${TEST} ${CHK} -eq ${DEBIAN} && DIST="Debian" | ||
| 245 | - ${TEST} ${CHK} -eq ${MANDRAKE} && DIST="Mandrake" | ||
| 246 | - ${TEST} ${CHK} -eq ${YELLOWDOG} && DIST="Yellowdog" | ||
| 247 | - ${TEST} ${CHK} -eq ${SUNJDS} && DIST="Sun" | ||
| 248 | - ${TEST} ${CHK} -eq ${GENTOO} && DIST="Gentoo" | ||
| 249 | - ${TEST} ${CHK} -eq ${SOLARIS} && DIST="Solaris" | 98 | + [ ${CHK} -eq ${SUSE} ] && DIST="Suse" |
| 99 | + [ ${CHK} -eq ${REDHAT} ] && DIST="Redhat" | ||
| 100 | + [ ${CHK} -eq ${FEDORA} ] && DIST="Fedora" | ||
| 101 | + [ ${CHK} -eq ${SLACKWARE} ] && DIST="Slakware" | ||
| 102 | + [ ${CHK} -eq ${DEBIAN} ] && DIST="Debian" | ||
| 103 | + [ ${CHK} -eq ${MANDRAKE} ] && DIST="Mandrake" | ||
| 104 | + [ ${CHK} -eq ${YELLOWDOG} ] && DIST="Yellowdog" | ||
| 105 | + [ ${CHK} -eq ${SUNJDS} ] && DIST="Sun" | ||
| 106 | + [ ${CHK} -eq ${GENTOO} ] && DIST="Gentoo" | ||
| 107 | + [ ${CHK} -eq ${SOLARIS} ] && DIST="Solaris" | ||
| 250 | 108 | ||
| 251 | if [ 'Unknown' != "${DIST}" ] | 109 | if [ 'Unknown' != "${DIST}" ] |
| 252 | then | 110 | then |
| @@ -257,59 +115,14 @@ get_dist_info() { | @@ -257,59 +115,14 @@ get_dist_info() { | ||
| 257 | else | 115 | else |
| 258 | DIST="${OS}" | 116 | DIST="${OS}" |
| 259 | fi | 117 | fi |
| 260 | -} | ||
| 261 | 118 | ||
| 262 | -## | ||
| 263 | -# Here now starts the usage of the functions defined above. | ||
| 264 | -# | ||
| 265 | - | ||
| 266 | -## | ||
| 267 | -# first specify some programs | ||
| 268 | -# | ||
| 269 | -WHICH="/usr/bin/which" | ||
| 270 | -UNAME="$(${WHICH} uname)" | ||
| 271 | -TEST="$(${WHICH} test)" | ||
| 272 | -GREP="$(${WHICH} grep)" | ||
| 273 | -AWK="$(${WHICH} awk)" | ||
| 274 | -ECHO="$(${WHICH} echo)" | ||
| 275 | -SORT="$(${WHICH} sort)" | ||
| 276 | -TR="$(${WHICH} tr)" | ||
| 277 | -PRINTF="$(${WHICH} printf)" | ||
| 278 | -LOGGER="$(${WHICH} logger)" | ||
| 279 | -IP="$(${WHICH} ip)" | ||
| 280 | -IFCONFIG="$(${WHICH} ifconfig)" | ||
| 281 | - | ||
| 282 | -get_dist_info | ||
| 283 | -get_if_data | 119 | + export DIST CLASSES |
| 120 | +} | ||
| 284 | 121 | ||
| 285 | ## | 122 | ## |
| 286 | -# report everysthing | 123 | +# autorun this if sourced. |
| 287 | # | 124 | # |
| 288 | 125 | ||
| 289 | -${PRINTF} "%15s : %s\n" "OS" "${OS}" | ||
| 290 | -${PRINTF} "%15s : %s\n" "KERNEL" "${KERNEL}" | ||
| 291 | -${PRINTF} "%15s : %s\n" "VERSION" "${VERSION}" | ||
| 292 | -${PRINTF} "%15s : %s\n" "PLATFORM" "${PLATFORM}" | ||
| 293 | -${PRINTF} "%15s : %s\n" "DIST" "${DIST}" | ||
| 294 | -${PRINTF} "%15s : %s\n" "HOSTNAME" "${HOSTNAME}" | ||
| 295 | -${PRINTF} "%15s : %s\n" "# INTERFACES" "${NINTERFACES}" | ||
| 296 | - | ||
| 297 | -NO=1 | ||
| 298 | -while [ ${NO} -le ${NINTERFACES:=0} ] | ||
| 299 | -do | ||
| 300 | - eval printf \"%15s : %s\\\n\" \"IF${NO}_NAME\" \"\${IF${NO}_NAME}\" | ||
| 301 | - eval printf \"%15s : %s\\\n\" \"IF${NO}_MAC\" \"\${IF${NO}_MAC}\" | ||
| 302 | - eval printf \"%15s : %s\\\n\" \"IF${NO}_STATE\" \"\${IF${NO}_STATE}\" | ||
| 303 | - eval printf \"%15s : %s\\\n\" \"IF${NO}_IPV4\" \"\${IF${NO}_IPV4}\" | ||
| 304 | - eval printf \"%15s : %s\\\n\" \"IF${NO}_IPV6\" \"\${IF${NO}_IPV6}\" | ||
| 305 | - NO=$((NO+1)) | ||
| 306 | -done | ||
| 307 | - | ||
| 308 | -${PRINTF} "%15s : %s\n" "CLASSES" "${CLASSES}" | ||
| 309 | - | ||
| 310 | -echo | ||
| 311 | -echo $(mask2cidr 255.255.128.0) | ||
| 312 | -echo $(cidr2mask 17) | ||
| 313 | -eval echo \$\(cidr2mask $(mask2cidr 255.255.128.0)\) | 126 | +[ -z "${DIST}" ] && get_dist_info |
| 314 | 127 | ||
| 315 | # vim: set ts=4 sw=4: | 128 | # vim: set ts=4 sw=4: |
utils.sh
0 → 100755
| 1 | +#!/bin/dash | ||
| 2 | + | ||
| 3 | +## | ||
| 4 | +# make definitions only when not already defined | ||
| 5 | +# | ||
| 6 | + | ||
| 7 | +command -v filename2symbol >/dev/null | ||
| 8 | +if [ $? -ne 0 ] | ||
| 9 | +then | ||
| 10 | + filename2symbol() { | ||
| 11 | + local SYM="${1}" | ||
| 12 | + | ||
| 13 | + if [ 1 -ne $# ] | ||
| 14 | + then | ||
| 15 | + logger -p syslog.err 'filename2sybol: missing filename' | ||
| 16 | + exit 1 | ||
| 17 | + fi | ||
| 18 | + | ||
| 19 | + while [ "${SYM}" != "${SYM%/*}" -o "${SYM}" != "${SYM%.*}" ] | ||
| 20 | + do | ||
| 21 | + if [ "${SYM}" != "${SYM%.*}" ] | ||
| 22 | + then | ||
| 23 | + SYM="${SYM%%.*}_${SYM#*.}" | ||
| 24 | + else | ||
| 25 | + SYM="${SYM%%/*}_${SYM#*/}" | ||
| 26 | + fi | ||
| 27 | + done | ||
| 28 | + | ||
| 29 | + echo "${SYM}" | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + canonify_name() { | ||
| 33 | + local FILE="${1}" | ||
| 34 | + local DIR="${PWD}" | ||
| 35 | + | ||
| 36 | + # if FILE starts with a / its already canonified | ||
| 37 | + if [ "${FILE}" != ${FILE#/} ] | ||
| 38 | + then | ||
| 39 | + echo "${FILE}" | ||
| 40 | + return 0 | ||
| 41 | + fi | ||
| 42 | + | ||
| 43 | + # simply remove ./ and make a ../ remove a part from pwd | ||
| 44 | + while [ "${FILE}" != ${FILE#./} -o "${FILE}" != ${FILE#../} ] | ||
| 45 | + do | ||
| 46 | + if [ "${FILE}" != ${FILE#./} ] | ||
| 47 | + then | ||
| 48 | + FILE="${FILE#./}" | ||
| 49 | + else | ||
| 50 | + FILE="${FILE#../}" | ||
| 51 | + DIR="${DIR%/*}" | ||
| 52 | + fi | ||
| 53 | + done | ||
| 54 | + | ||
| 55 | + echo "${DIR}/${FILE}" | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + include_once() { | ||
| 59 | + local FILE="$(canonify_name "${1}")" | ||
| 60 | + local SYM="$(filename2symbol "${FILE}")" | ||
| 61 | + | ||
| 62 | + if [ 1 -ne $# ] | ||
| 63 | + then | ||
| 64 | + logger -p syslog.err 'include_once: missing filename' | ||
| 65 | + exit 1 | ||
| 66 | + fi | ||
| 67 | + | ||
| 68 | + if eval [ -z \"\${SOURCED_${SYM}}\" ] | ||
| 69 | + then | ||
| 70 | + . ${FILE} | ||
| 71 | + eval export SOURCED_${SYM}=\"\${FILE}\" | ||
| 72 | + fi | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + ## | ||
| 76 | + # get and export the locations of used programs and export them | ||
| 77 | + # I assume that on every UNIX/shell variant at least [ is globally | ||
| 78 | + # available. I will use it throughout all other scripts without | ||
| 79 | + # checking for existence. | ||
| 80 | + # I also assume through all scripts that eval is available. | ||
| 81 | + # | ||
| 82 | + [ -z "${WHICH}" ] && WHICH="/usr/bin/which" | ||
| 83 | + [ -z "${UNAME}" ] && UNAME="$(${WHICH} uname)" | ||
| 84 | + [ -z "${GREP}" ] && GREP="$(${WHICH} grep)" | ||
| 85 | + [ -z "${AWK}" ] && AWK="$(${WHICH} awk)" | ||
| 86 | + [ -z "${ECHO}" ] && ECHO="$(${WHICH} echo)" | ||
| 87 | + [ -z "${SORT}" ] && SORT="$(${WHICH} sort)" | ||
| 88 | + [ -z "${TR}" ] && TR="$(${WHICH} tr)" | ||
| 89 | + [ -z "${PRINTF}" ] && PRINTF="$(${WHICH} printf)" | ||
| 90 | + [ -z "${LOGGER}" ] && LOGGER="$(${WHICH} logger)" | ||
| 91 | + [ -z "${IP}" ] && IP="$(${WHICH} ip)" | ||
| 92 | + [ -z "${IFCONFIG}" ] && IFCONFIG="$(${WHICH} ifconfig)" | ||
| 93 | + | ||
| 94 | + export WHICH UNAME GREP AWK ECHO SORT TR PRINTF LOGGER IP IFCONFIG | ||
| 95 | +fi | ||
| 96 | + | ||
| 97 | +# vim: set ts=4 sw=4: |
Please
register
or
login
to post a comment