摘要:在2026年的今天,虽然我们拥有强大的云计算和自动化运维工具,但在许多企业的信息机房中,Linux系统依然是核心支柱。作为一名运维工程师,每天面对的往往是黑底白字的终端,输入着各种复杂的命令。虽然命令行功能强大,但对于新手或者需要快速概览系统状态的场景来说,它显得不够“友好”。
今天,我通过本项目和大家分享一个实用的技巧:如何利用Linux自带的 Whiptail 工具,结合Shell脚本,打造一个属于你自己的可视化系统管理平台。这不仅能提高工作效率,还能让你的系统管理界面变得美观、直观。
一、为什么要打造可视化平台?
在2026年的今天,虽然有Web面板,但它们往往需要安装Nginx、PHP等复杂环境,不仅占用资源,还可能带来安全风险。
Whiptail是Linux系统中基于Newt库的轻量级终端对话框工具。它最大的优势在于:绝大多数Linux发行版默认自带,无需图形界面(GUI),在纯字符终端(Terminal)或SSH连接中即可运行。
它能绘制出窗口、菜单、消息框、输入框等控件,让我们通过鼠标点击或键盘选择来管理服务器,极大地降低了操作门槛,非常适合在机房巡检或远程协助时使用。
二、平台架构与五大核心功能模块
一个真正切合工作实际的管理平台,不能只是花架子,必须覆盖运维最核心的痛点。基于实际工作情况,本项目设计了以下五大核心功能模块,并构建了“主菜单循环 + 函数封装”的逻辑架构。
1.架构设计
2.五大核心功能清单
三、核心代码实现与界面布局
为了让界面在终端中既美观又实用,我们需要精心设计窗口的大小尺寸以及信息的排版。
1.程序初始化与全局变量
为了保证界面风格统一,我们首先定义一个全局的标题变量,并设置标准的窗口尺寸(高度20行,宽度70列,这是一个在绝大多数终端中都不会变形的尺寸)。
#!/bin/bash
# 文件名: system_admin_whiptail.sh
# 功能: Linux系统可视化管理平台
# 作者: 广州运维团队
TITLE="Linux系统可视化管理平台"
HEIGHT=20
WIDTH=70
2.主菜单设计 (交互入口)
这是用户的第一印象。本项目使用 whiptail --menu 创建一个包含10个选项的菜单。代码中的 3>&1 1>&2 2>&3 是Whiptail的标准重定向语法,用于捕获用户的选择。
while true
do
OPTION=$(whiptail--title "$TITLE" --menu "🚀 欢迎使用运维管理平台,请选择功能:" $HEIGHT $WIDTH 12 \
"1""👤 查看当前登录帐号" \
"2""👥 查看所有登录用户" \
"3""📊 统计CPU利用率" \
"4""🧠 统计内存利用率" \
"5""💾 统计磁盘利用率" \
"6""🌐 统计TCP连接数" \
"7""📈 查看系统负载" \
"8""📂 查看磁盘文件" \
"9""🔧 重启系统服务" \
"0""🚪 退出程序" 3>&1 1>&2 2>&3)
case$OPTION in
1)current_account ;;
2)all_users ;;
3)cpu ;;
4)memory ;;
5)disk ;;
6)tcp_status ;;
7)system_load ;;
8)browse_files ;;
9)restart_service ;;
0)exit 0 ;;
*)whiptail --msgbox "无效选项,请重新选择" 10 40 ;;
esac
done
3.资源监控模块 (CPU与内存)
这是平台最核心的部分。原始的 vmstat 和 free 命令输出对新手不友好,我们需要将其转化为直观友好的格式。
function cpu() {
#提取vmstat第三行数据,计算使用率和I/O等待
util=$(vmstat1 1 | awk '{if(NR==3) printf "%.1f%%", 100-$15}')
iowait=$(vmstat1 1 | awk '{if(NR==3) printf "%.1f%%", $16}')
#使用美观的消息框展示
whiptail--title "CPU监控" --msgbox "💻 CPU 使用率:$util\n⏳ 磁盘I/O等待:$iowait" 12 50
}
function memory() {
total=$(free-m | awk '{if(NR==2) printf "%.1fG", $2/1024}')
used=$(free-m | awk '{if(NR==2) printf "%.1fG", ($2-$7)/1024}')
available=$(free-m | awk '{if(NR==2) printf "%.1fG", $7/1024}')
whiptail--title "内存监控" --msgbox "总容量:$total\n已使用:$used\n剩余可用:$available" 15 50
}
4.网络状态分析模块 (TCP与负载)
网络故障涉及路由、端口、连接状态等多个层面,传统命令行排查方式信息分散、效率低下;通过可视化界面集中展示监听端口、TCP连接统计和连通性测试结果,可以显著降低排查难度,提升故障定位速度。
function tcp_status() {
#统计TCP状态
tcp_list=$(ss-antp | awk 'NR>1 {print $1}' | sort | uniq -c)
#使用滚动文本框展示,防止内容过多
whiptail--title "网络状态" --scrolltext --msgbox "TCP连接状态统计:\n$tcp_list" 20 60
}
function system_load() {
load=$(uptime| awk -F'load average:' '{print $2}')
whiptail--title "系统负载" --msgbox "系统平均负载:$load" 10 50
}
5.用户与服务管理模块 (安全与控制)
function all_users() {
user_list=$(who)
whiptail--title "登录用户" --scrolltext --msgbox "当前登录用户信息:\n$user_list" 20 60
}
function restart_service() {
service_name=$(whiptail--inputbox "请输入服务名(如 sshd, nginx):" 10 50 "" 3>&1 1>&2 2>&3)
if(whiptail --title "危险操作" --yesno "确定要重启 $service_name 服务吗?" 10 50); then
systemctlrestart "$service_name"
if[ $? -eq 0 ]; then
whiptail--msgbox "✅ 服务 $service_name 重启成功" 10 50
else
whiptail--msgbox "❌ 重启失败,请检查服务名或权限(需root)" 12 50
fi
fi
}
6.文件与目录管理模块 (浏览与查看)
磁盘文件浏览:输入目录路径,查看文件列表。
function browse_files() {
dir_path=$(whiptail--inputbox "请输入要查看的目录路径:" 10 50 "/home" 3>&1 1>&2 2>&3)
if[ -d "$dir_path" ]; then
#使用--scrolltext启用滚动条,防止文件过多显示不全
file_list=$(ls-lh "$dir_path" | head -20)
whiptail--title "文件列表" --scrolltext --msgbox "📂 $dir_path 下的文件:\n$file_list" 25 80
else
whiptail--msgbox "❌ 目录不存在!" 10 40
fi
}
四、实际工作场景中的应用体验
1.编写程序
执行指令# vim system_admin_whiptail.sh

2.启动程序
执行指令# sh system_admin_whiptail.sh
界面呈现:屏幕上出现一个灰底黑字的清晰菜单,列出了7个一级功能选项(部分还有二级功能),当前选项高亮显示。如下图

3.使用程序
详细操作指引如下(动图展示):
五、总结
今天,虽然技术日新月异,但Linux运维的本质依然是对系统的掌控。这个“Linux系统可视化管理平台”不仅是一个工具,更是一种运维思维的转变,从枯燥的命令记忆转向直观的交互体验。
它零依赖、轻量级、安全可控,完美契合了企业服务器的管理需求。希望这篇文章能帮助大家打造出属于自己的Linux系统管理“百宝箱”,让每一次Linux系统的巡检都变得轻松而优雅。
📢 互动与分享
如果本文对您有帮助,欢迎:
1. 👍 点赞,让我知道您的认可。
2. 💬 留言,说说您最感兴趣的模块或任何建议。
3. 🔄 转发分享给您的技术团队或社区朋友,共同提升运维效率。
4. 👉 关注我,即可查看并下载完整项目代码,亲手打造属于您的自己的Linux系统可视化平台。