1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/sh
# 保存串口设备信息
echo -en "Content-type: text/html; charset=utf-8\n\n"
#*****************************************************
source ../bin/env.sh
db="../bin/db"
jsoner="../bin/jsoner"
 
path="/work/data"
 
 
df_output=$(df -h $path | tail -n 1)
 
# 解析输出字段
filesystem=$(echo "$df_output" | awk '{print $1}')
used=$(echo "$df_output" | awk '{print $3}')
available=$(echo "$df_output" | awk '{print $4}')
mounted_on=$(echo "$df_output" | awk '{print $6}')
 
# 提取数值和单位
used_value=$(echo "$used" | grep -oE '[0-9.]+')
used_unit=$(echo "$used" | grep -oE '[A-Za-z]+')
available_value=$(echo "$available" | grep -oE '[0-9.]+')
available_unit=$(echo "$available" | grep -oE '[A-Za-z]+')
 
if [[ "$used_unit" = "K" || "$used_unit" = "" ]]
then
    used_value="0"
    used_unit="M"
fi
 
if [[ "$used_unit" = "G" ]]
then
    used_value=$(echo "$used_value * 1024" | bc)
    used_unit="M"
    used="$used_value$used_unit"
fi
 
if [[ "$available_unit" = "K" || "$available_unit" = "" ]]
then
    available_value="0"
    available_unit="M"
fi
 
if [[ "$available_unit" = "G" ]]
then
    available_value=$(echo "$available_value * 1024" | bc)
    available_unit="M"
    available="$available_value$available_unit"
fi
 
# 确保单位一致
if [ "$used_unit" != "$available_unit" ]; then
    echo "错误:Used 和 Available 的单位不一致"
    exit 1
fi
 
# 计算 Size 字段的值
size_value=$(echo "$used_value + $available_value" | bc)
size="${size_value}${used_unit}"  # 保留单位
 
# 计算 Use% 字段的值
use_percent_value=$(echo "scale=2; $used_value / $size_value * 100" | bc)
use_percent="${use_percent_value}%"
 
 
 
# 输出解析结果
echo "{\"size\":\"$size\",\"used\":\"$used\",\"available\":\"$available\",\"use%\":\"$use_percent\"}"