当前位置: 首页 > news >正文

shell脚本 --案例实操

1、系统信息收集版本

编写一个脚本名为 collect_system_info.sh,实现以下功能:

  1. 收集系统的基本信息,包括但不限于操作系统版本、内核版本、主机名,并将这些信息输出到一个名为 system_info.txt 的文件中,每个信息占一行,并加上清晰的说明标签。

  2. 统计当前系统中正在运行的进程数量,并将结果追加到 system_info.txt 文件中,格式为“正在运行的进程数量:[具体数量]”。

  3. 使用合适的命令查找系统中占用 CPU 资源最多的前 5 个进程(如果系统有相关命令支持的话),并将它们的进程 ID 和进程名称输出到 system_info.txt 文件中,格式为“占用 CPU 多的进程:进程 ID - 进程名称”,每个进程占一行。如果系统无法直接找出前 5 个,可根据实际情况尽可能多地找出占用高的进程展示。

 vim collect_system_info.sh

#!/bin/bash
aaa_file="collect_system_info"
> "$aaa_file"#清空或创建文件
#收集系统基本信息
echo "系统基本信息" >> "$aaa_file"
echo "操作系统版本: $(grep -i 'pretty_name' /etc/os-release | cut -d'"' -f2)" >> "$aaa_file"
echo "系统内核: $(uname -r)" >> "$aaa_file"
echo "主机名: $(hostname)" >> "$aaa_file"
#统计正在运行的进程数量
echo "正在运行的进程数量:$(ps -e | wc -l)" >> "$aaa_file"
#查找占用内存最高的进程数
echo "前五占用cpu最高的进程:$(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6)" >> "$aaa_file"
#保存
echo "系统信息已保存在 $aaa_file"

2、用户管理配置脚本

创建一个脚本名为 user_config.sh,完成以下任务:

  1. 接受一个用户名为参数,如果该用户不存在,则创建这个用户,并设置一个随机生成的 8 位包含大小写字母和数字的密码(可借助相关命令或工具实现随机密码生成)。将用户信息(用户名和密码)追加到一个名为 users.txt 的文件中,格式为“用户名:密码”。

  2. 为新创建的用户添加一个备注信息,备注信息内容为“新创建用户于[当前日期]”,使用 chfn 命令实现(如果系统支持)。如果系统没有 chfn 命令,可将备注信息以一种合适的方式记录下来,比如在 users.txt 文件中用户名对应行的末尾添加备注。

  3. 将该用户添加到一个名为 common_group 的用户组中(如果该用户组不存在,则先创建它)。

 

#!/bin/bash# 检查是否提供了用户名参数
if [ $# -eq 0 ]; thenecho "错误:请提供用户名作为参数"echo "用法:$0 <用户名>"exit 1
fiusername=$1
current_date=$(date +"%Y-%m-%d")
password_file="users.txt"
common_group="common_group"# 生成随机密码(8位,包含大小写字母和数字)
generate_password() {tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 8
}# 检查用户是否存在
if id "$username" &>/dev/null; thenecho "用户 $username 已存在"
else# 生成随机密码password=$(generate_password)# 创建用户useradd -m "$username"echo "$username:$password" | chpasswd# 将用户信息添加到文件echo "$username:$password" >> "$password_file"echo "用户 $username 已创建,密码已设置"# 添加备注信息if command -v chfn &>/dev/null; thenchfn -f "新创建用户于$current_date" "$username"# 更新文件中的备注信息sed -i "s/^$username:.*/&:新创建用户于$current_date/" "$password_file"else# 如果没有chfn命令,直接在文件中添加备注sed -i "s/^$username:.*/&:新创建用户于$current_date/" "$password_file"fi
fi# 处理用户组
if ! getent group "$common_group" &>/dev/null; thengroupadd "$common_group"echo "用户组 $common_group 已创建"
fi# 将用户添加到common_group
if ! id -nG "$username" | grep -qw "$common_group"; thenusermod -aG "$common_group" "$username"echo "用户 $username 已添加到用户组 $common_group"
elseecho "用户 $username 已在用户组 $common_group 中"
fiexit 0
[root@pc1 ~]# bash user_config.sh zhangsan
用户 zhangsan 已创建,密码已设置
正在更改 zhangsan 的 finger 信息。Finger 信息已更改。
用户组 common_group 已创建
用户 zhangsan 已添加到用户组 common_group
[root@pc1 ~]# cat users.txt 
zhangsan:faqdvTA7:新创建用户于2025-06-09

相关文章:

  • 【优选算法】模拟 问题算法
  • 【CSS-7】深入解析CSS伪类:从基础到高级应用
  • 73常用控件_QFormLayout的使用
  • SQL 注入开放与修复
  • 针对异构数据的联邦学习
  • Linux 基础IO(下)
  • D25异常处理
  • 【学习笔记】深入理解Java虚拟机学习笔记——第5章 调优案例分析与实战
  • NLP学习路线图(三十二): 模型压缩与优化
  • 从认识AI开始-----变分自编码器:从AE到VAE
  • LangChain工具集成实战:构建智能问答系统完整指南
  • springboot3.x对接AI智谱清言
  • 前端获取接口数据流程
  • 利用coze工作流制作一个自动生成PPT的智能体
  • ORACLE 修改端口号之后无法启动?
  • 安装Openstack
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • 线性规划饮食问题求解:FastAPI作为服务端+libhv作为客户端实现
  • Web应用安全漏洞全解析:从原理到实战防御
  • 词法分析和词性标注 自然语言处理
  • 乐亭网站建设/雅思培训机构哪家好机构排名
  • 广州正规网站建设哪家好/百度seo优化排名客服电话
  • 佛山app开发公司/seo快速推广
  • 怎么在网站做系统/百度竞价最低点击一次多少钱
  • 深圳品牌网站建设公司排名/友情链接网站大全
  • 做页面设计的网站/百度云链接