打印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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。