print kv

打印kv脚本

#!/bin/bash

# 首先定义颜色常量(你提供的代码)
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[0;37m'
BOLD='\033[1m'
NC='\033[0m'

# 函数定义(你的代码)
print_kv() {
    local key="$1"
    local value="$2"
    echo -e "${GREEN}${key}${NC}: ${value}"
}

print_kv_color() {
    local key="$1"
    local value="$2"
    local color="${3:-$GREEN}"
    echo -e "${color}${key}${NC}: ${value}"
}

print_kv_both() {
    local key="$1"
    local value="$2"
    local key_color="${3:-$GREEN}"
    local val_color="${4:-$WHITE}"
    echo -e "${key_color}${key}${NC}: ${val_color}${value}${NC}"
}

# ============ 示例1: print_kv ============
echo "============ 示例1: print_kv (键自动绿色) ============"
print_kv "姓名" "张三"
print_kv "年龄" "25"
print_kv "城市" "北京"
print_kv "邮箱" "zhangsan@example.com"

# ============ 示例2: print_kv_color ============
echo -e "\n============ 示例2: print_kv_color (指定键颜色) ============"
print_kv_color "用户名" "admin" "$CYAN"        # 青色键
print_kv_color "密码" "123456" "$RED"          # 红色键
print_kv_color "状态" "在线" "$GREEN"          # 绿色键
print_kv_color "警告" "磁盘空间不足" "$YELLOW" # 黄色键
print_kv_color "信息" "登录成功" "$BLUE"       # 蓝色键

# ============ 示例3: print_kv_both ============
echo -e "\n============ 示例3: print_kv_both (键和值不同颜色) ============"
print_kv_both "温度" "25°C" "$CYAN" "$WHITE"
print_kv_both "湿度" "65%" "$CYAN" "$GREEN"
print_kv_both "错误码" "404" "$RED" "$YELLOW"
print_kv_both "成功" "文件已保存" "$GREEN" "$WHITE"
print_kv_both "警告" "内存使用率 85%" "$YELLOW" "$RED"

# ============ 实际应用场景 ============
echo -e "\n============ 实际应用场景 ============"

# 场景1: 显示系统信息
echo -e "\n【系统信息】"
print_kv "主机名" "$(hostname)"
print_kv "系统" "$(uname -s)"
print_kv "内核版本" "$(uname -r)"
print_kv "CPU架构" "$(uname -m)"

# 场景2: 显示错误和警告(使用不同颜色)
echo -e "\n【服务状态】"
print_kv_color "Nginx" "运行中" "$GREEN"
print_kv_color "MySQL" "已停止" "$RED"
print_kv_color "Redis" "运行中" "$GREEN"
print_kv_color "磁盘使用" "85%" "$YELLOW"

# 场景3: 配置文件显示(键值不同颜色)
echo -e "\n【数据库配置】"
print_kv_both "host" "localhost" "$CYAN" "$WHITE"
print_kv_both "port" "3306" "$CYAN" "$GREEN"
print_kv_both "user" "root" "$CYAN" "$YELLOW"
print_kv_both "database" "myapp" "$CYAN" "$WHITE"

# 场景4: 循环打印多个键值对
echo -e "\n【环境变量】"
for var in PATH HOME SHELL USER; do
    print_kv "$var" "${!var}"
done

# 场景5: 使用默认颜色
echo -e "\n【默认颜色演示】"
print_kv_color "使用默认颜色" "键是绿色"  # 不传颜色参数,默认绿色
print_kv_both "键默认绿色" "值默认白色"     # 不传颜色参数

# 场景6: 组合使用BOLD加粗
echo -e "\n【加粗效果】"
print_kv_both "${BOLD}重要${NC}" "这是重要信息" "$RED" "$YELLOW"
print_kv_color "${BOLD}注意${NC}" "请仔细阅读" "$MAGENTA"

打印磁盘使用率

import subprocess
import json

disk_cmd = "findmnt --df / -J"  # 建议指定具体路径,避免输出过多

def run_command(cmd):
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        return result.returncode, result.stdout.strip(), result.stderr.strip()
    except subprocess.TimeoutExpired:
        return -1, "", "Command timed out"
    except Exception as e:
        return -1, "", str(e)

def readdata(data):
    """解析并显示磁盘信息"""
    try:
        # 解析JSON数据
        parsed_data = json.loads(data)
        
        # 获取 filesystems 列表
        items = parsed_data.get('filesystems', [])
        
        # 遍历并打印每个文件系统信息
        print("磁盘使用情况:")
        print("-" * 60)
        
        for item in items:
            target = item.get('target', 'N/A')      # 挂载点
            source = item.get('source', 'N/A')      # 设备源
            size = item.get('size', 'N/A')          # 总大小
            used = item.get('used', 'N/A')          # 已用
            avail = item.get('avail', 'N/A')        # 可用
            use_percent = item.get('use%', 'N/A')   # 使用率
            fstype = item.get('fstype', 'N/A')      # 文件系统类型
            
            print(f"挂载点: {target}")
            print(f"设备: {source}")
            print(f"文件系统: {fstype}")
            print(f"总大小: {size}")
            print(f"已用: {used}")
            print(f"可用: {avail}")
            print(f"使用率: {use_percent}")
            print("-" * 60)
        
        # 如果没有找到数据
        if not items:
            print("未找到文件系统信息")
            
    except json.JSONDecodeError as e:
        print(f"JSON解析错误: {e}")
        print(f"原始数据: {data}")
    except Exception as e:
        print(f"处理数据时出错: {e}")

if __name__ == '__main__':
    code, stdout, stderr = run_command(disk_cmd)
    
    if code == 0 and stdout:
        readdata(stdout)
    else:
        print(f"命令执行失败 (返回码: {code})")
        if stderr:
            print(f"错误信息: {stderr}")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容