From 3cd15a822007d87b124e0495b81647f5d3738a64 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Sep 2019 19:20:03 +0300 Subject: [PATCH] improved ext2, ext3, ext4 filesystems search --- plugins/disk/e2 | 54 +++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/plugins/disk/e2 b/plugins/disk/e2 index a9080055..c1377aa0 100755 --- a/plugins/disk/e2 +++ b/plugins/disk/e2 @@ -46,11 +46,10 @@ print_details() { } lse2() { - for name in {h,s}d{a..z}{1..16}; do - if [ -b /dev/$name ]; then - LANG=C dumpe2fs /dev/$name 2>/dev/null | print_details "$name" - fi - done + while read -r line ; do + value=( $line ); + LANG=C dumpe2fs -h "${value[1]}" 2>/dev/null | print_details "${value[0]}" + done <<< "$(lsblk -o NAME,PATH,FSTYPE -r | grep ext[2-4] | uniq )" } @@ -78,6 +77,7 @@ plugin=${self%%_*} if [ -n "${self//[!_]/}" ]; then blkdev=${self#*_} blkdevAppend=" ($blkdev)" + blkdevpath=$(lsblk -o PATH,NAME -r | grep "$blkdev" | uniq | cut -d' ' -f1) else blkdev= blkdevAppend= @@ -108,30 +108,31 @@ if [ "$1" = "config" ]; then if [ -z "$blkdev" ]; then lse2 else - LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev" + LANG=C dumpe2fs -h "$blkdevpath" 2>/dev/null | print_details "$blkdev" fi | \ while read name mounts maxmounts last interval writes; do [ -z "$blkdev" ] && blkdevAppend2=" ($name)" || blkdevAppend2= + name_esc=${name//-/_} case "$plugin" in mounts) - echo "${name}_mounts.label Mount count$blkdevAppend2" - echo "${name}_mounts.draw LINE2" - echo "${name}_maxmounts.label Max. mount count$blkdevAppend2" - echo "${name}_maxmounts.draw LINE1" + echo "${name_esc}_mounts.label Mount count$blkdevAppend2" + echo "${name_esc}_mounts.draw LINE2" + echo "${name_esc}_maxmounts.label Max. mount count$blkdevAppend2" + echo "${name_esc}_maxmounts.draw LINE1" ;; checked) - echo "${name}_last.label Since checked$blkdevAppend2" - echo "${name}_last.draw LINE2" - echo "${name}_last.cdef ${name}_last,86400,/" - echo "${name}_interval.label Check interval$blkdevAppend2" - echo "${name}_interval.draw LINE1" - echo "${name}_interval.cdef ${name}_interval,86400,/" + echo "${name_esc}_last.label Since checked$blkdevAppend2" + echo "${name_esc}_last.draw LINE2" + echo "${name_esc}_last.cdef ${name_esc}_last,86400,/" + echo "${name_esc}_interval.label Check interval$blkdevAppend2" + echo "${name_esc}_interval.draw LINE1" + echo "${name_esc}_interval.cdef ${name_esc}_interval,86400,/" ;; writes) - echo "${name}_writes.label Lifetime writes$blkdevAppend2" - echo "${name}_writes.type GAUGE" - echo "${name}_writes.draw LINE2" - echo "${name}_writes.cdef ${name}_writes,1073741824,*" + echo "${name_esc}_writes.label Lifetime writes$blkdevAppend2" + echo "${name_esc}_writes.type GAUGE" + echo "${name_esc}_writes.draw LINE2" + echo "${name_esc}_writes.cdef ${name_esc}_writes,1073741824,*" ;; esac done @@ -146,22 +147,23 @@ fi if [ -z "$blkdev" ]; then lse2 else - LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev" + LANG=C dumpe2fs -h "$blkdevpath" 2>/dev/null | print_details "$blkdev" fi | \ while read name mounts maxmounts last interval writes; do + name_esc=${name//-/_} case "$plugin" in mounts) - echo "${name}_mounts.value $mounts" - echo "${name}_maxmounts.value $maxmounts" + echo "${name_esc}_mounts.value $mounts" + echo "${name_esc}_maxmounts.value $maxmounts" ;; checked) now=`date +%s` past=$(( now - last )) - echo "${name}_last.value $past" - echo "${name}_interval.value $interval" + echo "${name_esc}_last.value $past" + echo "${name_esc}_interval.value $interval" ;; writes) - echo "${name}_writes.value $writes" + echo "${name_esc}_writes.value $writes" ;; esac done