OpenWRT v21.02系统信息脚本优化:改为双列布局
OpenWRT sysinfo脚本双列布局实现方法
针对OpenWRT v21.02的ash/bash环境,以下两种方法可以快速将单列系统信息改成紧凑的双列布局:
方法一:固定宽度手动排版(精准控制)
适合需要自定义列宽、对齐方式的场景,代码可读性强,新手易调试:
#!/bin/ash # 先收集所有系统信息到变量(避免重复执行命令) HOSTNAME="主机名: $(hostname)" OS_VER="系统版本: $(grep DISTRIB_DESCRIPTION /etc/openwrt_release | cut -d'"' -f2)" KERNEL_VER="内核版本: $(uname -r)" CPU_MODEL="CPU型号: $(grep 'model name' /proc/cpuinfo | head -n1 | cut -d: -f2 | sed 's/^ //')" CPU_CORES="CPU核心数: $(grep -c ^processor /proc/cpuinfo)" MEM_TOTAL="内存总大小: $(free -h | awk '/Mem/{print $2}')" MEM_USED="已用内存: $(free -h | awk '/Mem/{print $3}')" DISK_TOTAL="硬盘总大小: $(df -h / | awk '/\//{print $2}')" DISK_USED="已用硬盘: $(df -h / | awk '/\//{print $3}')" CURRENT_DATE="当前时间: $(date '+%Y-%m-%d %H:%M:%S')" # 双列输出:左列固定30字符宽度(左对齐),右列自动填充 printf "%-30s %s\n" "$HOSTNAME" "$OS_VER" printf "%-30s %s\n" "$KERNEL_VER" "$CPU_MODEL" printf "%-30s %s\n" "$CPU_CORES" "$MEM_TOTAL" printf "%-30s %s\n" "$MEM_USED" "$DISK_TOTAL" printf "%-30s %s\n" "$DISK_USED" "$CURRENT_DATE"
- 调整列宽:修改
%-30s中的数字即可,比如改成%-25s适配窄屏幕 - 执行方式:保存为
sysinfo.sh,运行chmod +x sysinfo.sh && ./sysinfo.sh
方法二:自动分栏(无需手动分组)
适合信息条目较多的场景,系统自动分配左右列内容,无需手动配对:
#!/bin/ash # 生成临时信息文件 cat << EOF > /tmp/sysinfo.tmp 主机名: $(hostname) 系统版本: $(grep DISTRIB_DESCRIPTION /etc/openwrt_release | cut -d'"' -f2) 内核版本: $(uname -r) CPU型号: $(grep 'model name' /proc/cpuinfo | head -n1 | cut -d: -f2 | sed 's/^ //') CPU核心数: $(grep -c ^processor /proc/cpuinfo) 内存总大小: $(free -h | awk '/Mem/{print $2}') 已用内存: $(free -h | awk '/Mem/{print $3}') 硬盘总大小: $(df -h / | awk '/\//{print $2}') 已用硬盘: $(df -h / | awk '/\//{print $3}') 当前时间: $(date '+%Y-%m-%d %H:%M:%S') EOF # 自动分成两列输出,-t取消页眉页脚 pr -2 -t /tmp/sysinfo.tmp # 清理临时文件 rm /tmp/sysinfo.tmp
- 优势:新增信息条目时无需修改排版逻辑,自动适配
- 注意:
pr命令是OpenWRT默认自带的,无需额外安装包
内容的提问来源于stack exchange,提问作者AjieD
相关产品推荐
相关产品推荐

