package main

import (
	"fmt"
	"os/exec"
	"strconv"
	"strings"
)

// getDiskUsage 解析 df 命令的输出
// df -B1 /dev/vdb
// Filesystem        1B-blocks        Used    Available Use% Mounted on
// /dev/vdb       527371075584 16390344704 484120408064   4% /mnt/disk001
func getDiskUsage(path string) (uint64, error) {
	cmd := exec.Command("df", "-B1", path)
	output, err := cmd.CombinedOutput()
	if err != nil {
		return 0, err
	}

	lines := strings.Split(string(output), "\n")
	if len(lines) < 2 {
		return 0, fmt.Errorf("unexpected output from df command")
	}

	fields := strings.Fields(lines[1])
	if len(fields) < 3 {
		return 0, fmt.Errorf("unexpected output format from df command")
	}
	parseUint, _ := strconv.ParseUint(fields[2], 10, 64)
	return parseUint, nil
}

func main() {
	path := "/dev/vdb" // 替换为您要查询的硬盘路径,如 "/dev/sda"

	used, err := getDiskUsage(path)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Printf("Used Disk Space: %d bytes\n", used)
}