登录检查脚本

  1. 提高兼容性(适应不同Linux发行版)
  2. 增强可视化效果和可读性
  3. 增加关键资源警戒提示
  4. 优化表格对齐和颜色使用
  5. 添加系统安全状态检查
#!/bin/bash# 改进版系统登录提示脚本
# 优化点:兼容性增强、资源警戒提示、表格美化、安全状态检查# 颜色定义
RED="\033[1;31m"
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
BLUE="\033[1;34m"
CYAN="\033[1;36m"
MAGENTA="\033[1;35m"
RESET="\033[0m"# 获取系统基本信息
HOSTNAME=$(hostname -f 2>/dev/null || hostname)
UPTIME=$(uptime -p | sed 's/up //;s/minutes/min/;s/hours/hr/')
OS_NAME=$(grep -E '^PRETTY_NAME' /etc/os-release | cut -d '"' -f2)# 兼容性更强的IP获取
IP_ADDR=$(ip route get 1 2>/dev/null | awk '{for(i=1;i<=NF;i++)if($i=="src")print $(i+1)}')
[ -z "$IP_ADDR" ] && IP_ADDR=$(hostname -I | awk '{print $1}')# 内存获取 (兼容 free 不同版本)
MEM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
MEM_USED=$(free -m | awk '/Mem:/ {print $3}')
MEM_AVAIL=$(free -m | awk '/Mem:/ {print $7}')
MEM_PCT=$((MEM_USED * 100 / (MEM_TOTAL ? MEM_TOTAL : 1)))# CPU使用率获取 (更精确的方法)
CPU_USAGE=$(top -bn2 | grep "Cpu(s)" | tail -1 | \awk -F',' '{gsub("%","",$4);print 100 - $4}' | \awk '{printf "%.0f", $1}'
)# 负载信息
LOADAVG=$(awk '{print $1,$2,$3}' /proc/loadavg)
CPU_CORES=$(grep -c processor /proc/cpuinfo)# 警戒级别计算函数
warn_level() {local value=$1if [[ $value -ge 90 ]]; then echo "${RED}危险!${RESET}"; elif [[ $value -ge 75 ]]; then echo "${YELLOW}警告!${RESET}";else echo "${GREEN}正常${RESET}"; fi
}# 输出系统信息
echo -e "\n${BLUE}===> 恭喜登录 ${MAGENTA}$HOSTNAME${BLUE} ($OS_NAME) <===${RESET}\n"# 关键资源表格
echo -e "${YELLOW}▂▂▂▂▂▂▂▂▂▂▂▂ 核心资源状态 ▂▂▂▂▂▂▂▂▂▂▂▂${RESET}"
printf "${CYAN}| %-10s | %-12s | %-7s | %-10s |${RESET}\n" "资源类型" "使用情况" "使用率" "状态"
echo -e "${YELLOW}├────────────┼──────────────┼─────────┼────────────┤${RESET}"# CPU信息行
printf "| %-10s | %-12s | ${YELLOW}%5s%%${RESET} | %-10s |\n" \"CPU" "${LOADAVG} (${CPU_CORES}核)" "$CPU_USAGE" "$(warn_level $CPU_USAGE)"# 内存信息行
printf "| %-10s | %-12s | ${YELLOW}%5s%%${RESET} | %-10s |\n" \"内存" "${MEM_USED}MB/${MEM_TOTAL}MB" "$MEM_PCT" "$(warn_level $MEM_PCT)"# 网络信息行
printf "| %-10s | %-12s | %-9s | ${GREEN}%-10s${RESET} |\n" "网络" "$IP_ADDR" " - " "在线"# 运行时长行
printf "| %-10s | %-12s | %-9s | ${CYAN}%-10s${RESET} |\n" "运行时长" "$UPTIME" " - " " - "
echo -e "${YELLOW}└────────────┴──────────────┴─────────┴────────────┘${RESET}"# 磁盘信息表格
echo -e "\n${YELLOW}▂▂▂▂▂▂▂▂▂▂▂▂ 磁盘使用情况 ▂▂▂▂▂▂▂▂▂▂▂▂${RESET}"
printf "${CYAN}| %-16s | %-8s | %-8s | %-7s | %-10s |${RESET}\n" \"挂载点" "已用" "总共" "使用率" "状态"
echo -e "${YELLOW}├──────────────────┼──────────┼──────────┼─────────┼────────────┤${RESET}"# 处理磁盘信息
df -h -x tmpfs -x devtmpfs | awk 'NR>1 {usage = substr($5, 1, length($5)-1);status = (usage > 90) ? "'"${RED}"'危险!'"${RESET}"'" : (usage > 75) ? "'"${YELLOW}"'警告'"${RESET}"'" : "'"${GREEN}"'正常'"${RESET}"'";printf "| %-16s | %-8s | %-8s | %-7s | %-10s |\n", $6, $3, $2, $5, status
}'echo -e "${YELLOW}└──────────────────┴──────────┴──────────┴─────────┴────────────┘${RESET}"# 安全检查提示
echo -e "\n${YELLOW}▂▂▂▂▂▂▂▂▂▂▂▂ 安全提示 ▂▂▂▂▂▂▂▂▂▂▂▂${RESET}"
echo -e "${MAGENTA}最近登录用户:${RESET}"
last -5 -i | head -n -2 | awk '{printf " %s %s %-16s %s %s %s\n", $1, $2, $3, $4, $5, $6
}'
echo -e "\n${MAGENTA}重要提示:${RESET}"
echo -e "  - ${RED}root${RESET} 用户最后登录: $(last -i root | head -1 | awk '{print $4,$5,$6,$7}')"
echo -e "  - 当前有 ${RED}$(who | wc -l)${RESET} 个活跃用户"# 结束语
echo -e "\n${GREEN}系统准备就绪! ${RESET}操作需谨慎, ${RED}勿当背锅侠!${RESET}"
echo -e "${BLUE}关键提示:${RESET} 执行 ${CYAN}sudo -l${RESET} 查看您的权限, ${CYAN}history${RESET} 查看操作记录\n"

主要优化点说明:

  1. 兼容性增强
    • 改进了IP获取方式,适用于不同Linux发行版
    • 优化内存获取方法避免除零错误
    • 适配不同版本的free命令输出格式
  2. 可视化增强
    • 使用Unicode线条绘制更美观的表格边框
    • 关键资源添加彩色状态标记(正常/警告/危险)
    • 优化颜色使用,不同资源类型使用不同颜色
  3. 资源警戒提示
    • 添加CPU、内存、磁盘使用率的三级警告机制
    • 危险资源自动标红显示
    • 内存信息增加"可用内存"字段
  4. 安全增强
    • 显示最近登录用户列表
    • 提示root用户最后登录时间
    • 显示当前活跃用户数量
    • 结束时提示查看权限和操作历史
  5. 结构优化
    • 使用函数封装重复逻辑(如警戒级别判断)
    • 更清晰的区域分割(核心资源/磁盘/安全)
    • 添加操作系统类型信息显示

这个优化版本在实际服务器环境使用时,会在用户登录后显示清晰的资源状态和安全提示,帮助运维人员快速了解系统状况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86735.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86735.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86735.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkinsfile调用groovy

先决条件 gitlab存放jenkinsfile以及groovy代码,jenkins我个人使用的是2.486具体的部署方法自己搞定,一堆文档. gitlab创建一个devops8项目组以及my-jenkins-demo2项目用于演示过程 创建群组 这里已经创建好相关群组. 进入群组创建新项目 创建一个空白项目 配置项目选项 说明…

Ubuntu20.04离线安装Realtek b852无线网卡驱动

最近有个项目&#xff0c;需要在 Ubuntu20.04 LTS 下开发&#xff0c;首先是安装 Linux&#xff0c;我们可以从下面的网址下载&#xff1a; https://releases.ubuntu.com/20.04/ 本以为一切顺利&#xff0c;结果刚开始就给我整不会了。我的电脑是联想设计师GeekPro7&#xff…

1 Studying《Computer Architecture A Quantitative Approach》5-7

目录 5 Thread-Level Parallelism 5.1 Introduction 5.2 Centralized Shared-Memory Architectures 5.3 Performance of Symmetric Shared-Memory Multiprocessors 5.4 Distributed Shared-Memory and Directory-Based Coherence 5.5 Synchronization: The Basics 5.6 M…

融智兴科技: RFID超高频柔性抗金属标签解析

在当今科技飞速发展的时代&#xff0c; RFID技术凭借其独特的优势&#xff0c;在众多领域得到了广泛应用。然而&#xff0c;在金属环境中&#xff0c;传统RFID标签往往面临着诸多挑战&#xff0c;如信号干扰、识别距离短等问题。融智兴科技推出的RFID 超高频柔性抗金属标签&…

PHP Error: 深入解析与解决策略

PHP Error: 深入解析与解决策略 引言 PHP作为世界上最流行的服务器端脚本语言之一,在全球范围内被广泛使用。然而,在PHP的开发过程中,错误处理是一个非常重要的环节。本文将深入探讨PHP错误处理的相关知识,包括错误类型、错误配置、错误日志以及常见的错误解决策略。 PH…

零基础langchain实战二:大模型输出格式化成json

零基础langchain实战一&#xff1a;模型、提示词和解析器-CSDN博客 书接上文 大模型输出格式化 在下面例子中&#xff1a;我们需要将大模型的输出格式化成json。 import os from dotenv import load_dotenvload_dotenv() # 加载 .env 文件 api_key os.getenv("DEEPS…

高通手机跑AI系列之——人脸变化算法

环境准备 手机 测试手机型号&#xff1a;Redmi K60 Pro 处理器&#xff1a;第二代骁龙8移动--8gen2 运行内存&#xff1a;8.0GB &#xff0c;LPDDR5X-8400&#xff0c;67.0 GB/s 摄像头&#xff1a;前置16MP后置50MP8MP2MP AI算力&#xff1a;NPU 48Tops INT8 &&…

TortoiseSVN 安装教程

前言 TortoiseSVN 是一款流行的 免费开源 的 Subversion (SVN) 客户端&#xff0c;专门为 Windows 操作系统 设计。它通过 Windows 资源管理器集成 提供直观的图形化界面&#xff0c;使用户可以轻松管理版本控制的文件和目录&#xff0c;无需使用命令行。 主要特点 资源管理器…

多张图片生成PDF每张图片生成pdf的一页

需要的库 <!-- 生成pdf--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency><!-- https://mvnrepository.com/artifact/commons-net/commons-n…

Java基础 Map集合框架 LinkedHashMap

LinkedHashMap LinkedHashMap类架构与继承关系核心特性继承自 HashMap有序性插入顺序访问顺序 双向链表结构非线程安全1.并发修改导致数据丢失2.并发迭代导致 ConcurrentModificationException3.并发修改导致链表结构破坏解决方案1. 使用 Collections.synchronizedMap&#xff…

MySQL 离线安装MariaDB

描述 离线环境下安装MySQL数据库&#xff0c;也就是MariaDB 操作 1、找到自带的mysql rpm -qa | grep -i ^mysql-rpm -qa | grep -i ^maria-2、卸载对应的包 rpm --nodeps -ev mysql-libs-5.1.73-8.el6_8.x86_64安装 MariaDb 离线安装包官网下载&#xff1a;地址 这个文…

JSON简介及其应用

JSON简介及其应用 A Brief Introduction and Applications of JSON By JacksonML 1. JSON的概念 JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式&#xff0c;采用键值对&#xff08;key-value&#xff09;的方式组织数据&#xff0c;…

RNN(循环神经网络)与LSTM(长短期记忆网络)输出的详细对比分析

今天在与同事探讨RNN时&#xff0c;引出了一个主题&#xff0c;RNN和LSTM的输出有什么区别。 以下是关于传统RNN&#xff08;循环神经网络&#xff09;与LSTM&#xff08;长短期记忆网络&#xff09;隐藏层内容、输出结果及模型区别的详细对比分析&#xff0c;结合结构原理、数…

【闲谈】技术债:软件开发的隐形杀手

编程中的“技术债”&#xff1a;隐形杀手与化解之道 在软件开发的世界里&#xff0c;我们常谈性能、安全、架构设计、用户体验等话题&#xff0c;但有一个常被忽视的概念却如影随形、悄然吞噬着项目的健康——技术债&#xff08;Technical Debt&#xff09;。 本文将带你深入…

Elasticsearch | 索引和模板字段管理:增加新字段的详细操作

关注CodingTechWork 背景介绍 Elasticsearch 是一款基于 Lucene 的搜索和数据分析引擎&#xff0c;广泛应用于日志分析、全文检索等领域。在使用 Elasticsearch 时&#xff0c;字段是存储在索引中的数据单位&#xff0c;字段的定义决定了数据的存储方式及其检索效率。因此&…

HTML表格中<tfoot>标签用法详解

在HTML中&#xff0c;<tfoot>标签用于定义表格的页脚&#xff08;表脚&#xff09;&#xff0c;通常包含汇总信息&#xff08;如总计、平均值等&#xff09;。其核心特点和使用方法如下&#xff1a; 基本特性 位置灵活 <tfoot>必须位于<table>内&#xff0c…

深度学习正负样本比例的影响及其调节方法

在深度学习中&#xff0c;数据是模型性能的决定性因素之一。特别是在二分类问题中&#xff0c;正负样本的比例对模型训练的影响尤为显著。本文将探讨正负样本比例对深度学习的影响&#xff0c;并给出相应的调节方法和代码示例。 什么是正负样本比例&#xff1f; 在二分类问题…

【公司经营】安全公司产品经营

一、产品经营 1.1 产品矩阵设计方法&#xff1a;风险场景驱动​ ​分层产品架构​ ​基础层​&#xff1a;防火墙/WAF/EDR&#xff08;标准化硬件软件&#xff09;​分析层​&#xff1a;SOC平台/XDR&#xff08;年订阅制&#xff0c;SaaS化交付&#xff09;​响应层​&#…

鸿蒙 Scroll 组件深度解析:丝滑滚动交互全场景实现

一、引言&#xff1a;Scroll—— 内容溢出场景的交互中枢 在鸿蒙应用开发中&#xff0c;当界面内容超出屏幕可视范围时&#xff0c;Scroll 容器组件成为实现流畅滚动交互的核心方案。作为从 API 7 开始支持的基础组件&#xff0c;它通过极简的属性配置与强大的滚动控制能力&am…

第十节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 菜单管理(下)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 对接后端登录接口(上) ✅ 第四节:Vben Ad…