39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
function h2b()
|
|
{
|
|
local val="$1"
|
|
local num unit
|
|
if [[ $val =~ ^([0-9.]+)([BKMGTP]?)$ ]]; then
|
|
num="${BASH_REMATCH[1]}"
|
|
unit="${BASH_REMATCH[2]}"
|
|
case "$unit" in
|
|
B|"") echo "${num%.*}" ;;
|
|
K) echo "$(awk "BEGIN{printf \"%d\", $num*1024}")" ;;
|
|
M) echo "$(awk "BEGIN{printf \"%d\", $num*1024*1024}")" ;;
|
|
G) echo "$(awk "BEGIN{printf \"%d\", $num*1024*1024*1024}")" ;;
|
|
T) echo "$(awk "BEGIN{printf \"%d\", $num*1024*1024*1024*1024}")" ;;
|
|
P) echo "$(awk "BEGIN{printf \"%d\", $num*1024*1024*1024*1024*1024}")" ;;
|
|
*) echo "$num" ;;
|
|
esac
|
|
else
|
|
echo 0
|
|
fi
|
|
}
|
|
|
|
curl localhost:8000/fs_top 2>/dev/null | while IFS= read -r line; do
|
|
if [[ "$line" =~ ^[[:space:]]*([a-zA-Z0-9_]+)[[:space:]]+([0-9]+)/s[[:space:]]+([0-9]+)[[:space:]]+([0-9]+)[[:space:]]*$ ]]; then
|
|
stat="${BASH_REMATCH[1]}"
|
|
rate="${BASH_REMATCH[2]}"
|
|
total="${BASH_REMATCH[3]}"
|
|
mount="${BASH_REMATCH[4]}"
|
|
|
|
printf "bcachefs_fs_top,stat=%s,fspath=/mnt,uuid=3d3a0763-4dfe-41e6-93c1-8c791ec98176 rate=%si,total=%si,mount=%si\n" \
|
|
"$stat" "$rate" "$total" "$mount"
|
|
#else
|
|
# echo DOES NOT MATCH "$line" >&2
|
|
fi
|
|
done
|