Skip to content

Commit 24b5088

Browse files
committed
feat: add bash scripts export for native zabbix agent
1 parent 3634229 commit 24b5088

File tree

1 file changed

+378
-0
lines changed

1 file changed

+378
-0
lines changed
Lines changed: 378 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,378 @@
1+
class Scripts(object):
2+
Bash = {
3+
# name_of_script: 'script '
4+
'disk_sizes':
5+
"""#!/bin/bash
6+
PATH=/usr/local/bin:${PATH}
7+
IFS_DEFAULT="${IFS}"
8+
9+
contains() {
10+
[[ $1 =~ (^|${2})"${3}"($|${2}) ]] && echo "1" || echo "0"
11+
}
12+
13+
#################################################################################
14+
15+
while getopts "s::a:sj:uphvt:" OPTION; do
16+
case ${OPTION} in
17+
18+
j)
19+
JSON=1
20+
JSON_ATTR=(${OPTARG})
21+
IFS="${IFS_DEFAULT}"
22+
;;
23+
24+
esac
25+
done
26+
27+
#################################################################################
28+
29+
rval=$(cat /proc/self/mountinfo)
30+
exclude_list=("none" "unknown" "rootfs" "iso9660"
31+
"squashfs" "udf" "romfs" "ramfs"
32+
"debugfs" "cgroup" "cgroup_root"
33+
"pstore" "devtmpfs" "autofs"
34+
"cgroup" "configfs" "devpts"
35+
"efivarfs" "fusectl" "fuse.gvfsd-fuse"
36+
"hugetlbfs" "mqueue"
37+
"nfsd" "proc" "pstore"
38+
"rpc_pipefs" "securityfs" "sysfs"
39+
"nsfs" "tmpfs" "tracefs")
40+
list_str=$(IFS=","; echo "${exclude_list[*]}")
41+
output=" "
42+
43+
if [[ ${JSON} -eq 1 ]]; then
44+
echo '{'
45+
echo ' "data":['
46+
count=1
47+
while read line; do
48+
values=(${line})
49+
if [ $(contains "${list_str}" "," "${values[8]}") -eq 0 ]; then
50+
if [[ ${output} != " " ]]; then
51+
echo " ${output}"
52+
fi
53+
output='{ '
54+
output+='"'{#${JSON_ATTR[0]}}'"'
55+
output+=':'
56+
output+='"'${values[4]}'"'
57+
output+=' }'
58+
tmp="${output}"
59+
output="${output},"
60+
fi
61+
let "count=count+1"
62+
done <<< "${rval}"
63+
echo " ${tmp}"
64+
echo ' ]'
65+
echo '}'
66+
else
67+
echo "${rval:-0}"
68+
fi
69+
70+
exit ${rcode}
71+
72+
""",
73+
74+
'disk_stats':
75+
"""#!/usr/bin/env ksh
76+
IFS_DEFAULT="${IFS}"
77+
#
78+
#################################################################################
79+
80+
81+
while getopts "s::a:sj:uphvt:" OPTION; do
82+
case ${OPTION} in
83+
84+
j)
85+
JSON=1
86+
JSON_ATTR=(${OPTARG})
87+
IFS="${IFS_DEFAULT}"
88+
;;
89+
90+
esac
91+
done
92+
93+
#################################################################################
94+
95+
output=" "
96+
rval=`cat /proc/diskstats`
97+
if [[ ${JSON} -eq 1 ]]; then
98+
echo '{'
99+
echo ' "data":['
100+
count=1
101+
value=0
102+
while read line; do
103+
if [[ ${line} != '' ]]; then
104+
IFS="|" values=(${line})
105+
106+
if [[ $count == 1 ]]; then # for loop0 case
107+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
108+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
109+
read_op=`echo "$new_value2" | cut -d " " -f 4`
110+
read_sc=`echo "$new_value2" | cut -d " " -f 6`
111+
write_op=`echo "$new_value2" | cut -d " " -f 8`
112+
write_sc=`echo "$new_value2" | cut -d " " -f 10`
113+
ticks=`echo "$new_value2" | cut -d " " -f 13`
114+
else
115+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
116+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
117+
read_op=`echo "$new_value2" | cut -d " " -f 5`
118+
read_sc=`echo "$new_value2" | cut -d " " -f 7`
119+
write_op=`echo "$new_value2" | cut -d " " -f 9`
120+
write_sc=`echo "$new_value2" | cut -d " " -f 11`
121+
ticks=`echo "$new_value2" | cut -d " " -f 14`
122+
fi
123+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]] && [[ $new_value3 != *[0-9]* ]]; then
124+
if [[ ${output} != " " ]]; then
125+
echo " ${output}"
126+
fi
127+
value=$(($read_op+$value))
128+
output='{ '
129+
output+='"'{#${JSON_ATTR[0]}}'"'
130+
output+=':'
131+
output+='"'$new_value3'"'
132+
output+=' }'
133+
tmp="${output}"
134+
output="${output},"
135+
fi
136+
fi
137+
let "count=count+1"
138+
done <<< ${rval}
139+
echo " ${tmp}"
140+
echo ' ]'
141+
echo '}'
142+
else
143+
echo "${rval:-0}"
144+
fi
145+
146+
exit ${rcode}
147+
""",
148+
149+
'disk_stats_read_op':
150+
"""#!/usr/bin/env ksh
151+
rval=`cat /proc/diskstats`
152+
153+
count=1
154+
value=0
155+
while read line; do
156+
if [[ ${line} != '' ]]; then
157+
IFS="|" values=(${line})
158+
159+
if [[ $count == 1 ]]; then # for loop0 case
160+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
161+
# echo $new_value2
162+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
163+
read_op=`echo "$new_value2" | cut -d " " -f 4`
164+
165+
else
166+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
167+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
168+
read_op=`echo "$new_value2" | cut -d " " -f 5`
169+
170+
fi
171+
re='^[0-9]+$'
172+
has_digits='no'
173+
if [[ "${new_value3: -1}" =~ $re ]]; then
174+
has_digits='yes'
175+
fi
176+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]] && [[ $has_digits == 'no' ]]; then
177+
value=$(($read_op+$value))
178+
179+
180+
fi
181+
fi
182+
let "count=count+1"
183+
done <<< ${rval}
184+
echo $(($value))
185+
186+
""",
187+
188+
'disk_stats_read_b':
189+
"""#!/usr/bin/env ksh
190+
rval=`cat /proc/diskstats`
191+
192+
count=1
193+
value=0
194+
while read line; do
195+
if [[ ${line} != '' ]]; then
196+
IFS="|" values=(${line})
197+
198+
if [[ $count == 1 ]]; then # for loop0 case
199+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
200+
# echo $new_value2
201+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
202+
read_sc=`echo "$new_value2" | cut -d " " -f 6`
203+
else
204+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
205+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
206+
read_sc=`echo "$new_value2" | cut -d " " -f 7`
207+
fi
208+
re='^[0-9]+$'
209+
has_digits='no'
210+
if [[ "${new_value3: -1}" =~ $re ]]; then
211+
has_digits='yes'
212+
fi
213+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]] && [[ $has_digits == 'no' ]]; then
214+
value=$(($read_sc+$value))
215+
fi
216+
fi
217+
let "count=count+1"
218+
done <<< ${rval}
219+
echo $(($value*512))
220+
221+
""",
222+
223+
'disk_stats_write_op':
224+
"""#!/usr/bin/env ksh
225+
rval=`cat /proc/diskstats`
226+
227+
count=1
228+
value=0
229+
while read line; do
230+
if [[ ${line} != '' ]]; then
231+
IFS="|" values=(${line})
232+
233+
if [[ $count == 1 ]]; then # for loop0 case
234+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
235+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
236+
write_op=`echo "$new_value2" | cut -d " " -f 8`
237+
238+
else
239+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
240+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
241+
242+
write_op=`echo "$new_value2" | cut -d " " -f 9`
243+
244+
fi
245+
re='^[0-9]+$'
246+
has_digits='no'
247+
if [[ "${new_value3: -1}" =~ $re ]]; then
248+
has_digits='yes'
249+
fi
250+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]] && [[ $has_digits == 'no' ]];then
251+
#echo $write_op
252+
253+
value=$(($write_op+$value))
254+
255+
256+
fi
257+
fi
258+
let "count=count+1"
259+
done <<< ${rval}
260+
echo $(($value))
261+
""",
262+
263+
'disk_stats_write_b':
264+
"""#!/usr/bin/env ksh
265+
rval=`cat /proc/diskstats`
266+
267+
count=1
268+
value=0
269+
while read line; do
270+
if [[ ${line} != '' ]]; then
271+
IFS="|" values=(${line})
272+
273+
if [[ $count == 1 ]]; then # for loop0 case
274+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
275+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
276+
write_sc=`echo "$new_value2" | cut -d " " -f 10`
277+
else
278+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
279+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
280+
write_sc=`echo "$new_value2" | cut -d " " -f 11`
281+
fi
282+
re='^[0-9]+$'
283+
has_digits='no'
284+
if [[ "${new_value3: -1}" =~ $re ]]; then
285+
has_digits='yes'
286+
fi
287+
#echo $values
288+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]] && [[ $has_digits == 'no' ]]; then
289+
#echo $write_sc
290+
#echo $new_value3
291+
value=$(($write_sc+$value))
292+
fi
293+
fi
294+
let "count=count+1"
295+
done <<< ${rval}
296+
echo $(($value*512))
297+
""",
298+
'net':
299+
"""#!/usr/bin/env ksh
300+
301+
302+
#################################################################################
303+
while getopts "s::a:sj:uphvt:" OPTION; do
304+
case ${OPTION} in
305+
306+
j)
307+
JSON=1
308+
JSON_ATTR=(${OPTARG})
309+
310+
;;
311+
esac
312+
done
313+
#################################################################################
314+
rval=$(cat /proc/net/dev)
315+
output=" "
316+
317+
if [[ ${JSON} -eq 1 ]]; then
318+
echo '{'
319+
echo ' "data":['
320+
count=1
321+
while read line; do
322+
values=(${line})
323+
if [[ "${values[0]}" != *"lo:"* ]] && [[ "${#values[@]}">1 ]]; then
324+
if [[ ${output} != " " ]] && [[ $count > 4 ]]; then
325+
echo " ${output}"
326+
fi
327+
output='{ '
328+
output+='"'{#${JSON_ATTR[0]}}'"'
329+
output+=':'
330+
t="${values[0]}"
331+
output+='"'${t%?}'"'
332+
output+=' }'
333+
tmp="${output}"
334+
output="${output},"
335+
fi
336+
let "count=count+1"
337+
done <<< "${rval}"
338+
echo " ${tmp}"
339+
echo ' ]'
340+
echo '}'
341+
else
342+
echo "${rval:-0}"
343+
fi
344+
345+
exit ${rcode}
346+
347+
""",
348+
349+
'disk_stats_ticks':
350+
"""#!/usr/bin/env ksh
351+
rval=`cat /proc/diskstats`
352+
353+
count=1
354+
value=0
355+
while read line; do
356+
if [[ ${line} != '' ]]; then
357+
IFS="|" values=(${line})
358+
359+
if [[ $count == 1 ]]; then # for loop0 case
360+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
361+
# echo $new_value2
362+
new_value3=`echo "$new_value2" | cut -d " " -f 3`
363+
ticks=`echo "$new_value2" | cut -d " " -f 13`
364+
else
365+
new_value2=`echo ${values[0]} | sed -n '/[0-9]/s/ \+/ /gp'`
366+
new_value3=`echo "$new_value2" | cut -d " " -f 4`
367+
ticks=`echo "$new_value2" | cut -d " " -f 14`
368+
fi
369+
if [[ $new_value3 != *"loop"* ]] && [[ $new_value3 != *"ram"* ]]; then
370+
#echo $ticks
371+
value=$(($ticks+$value))
372+
fi
373+
fi
374+
let "count=count+1"
375+
done <<< ${rval}
376+
echo $(($value))
377+
"""
378+
}

0 commit comments

Comments
 (0)