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