【shell】每日shell练习(系统用户安全审计/系统日志错误分析)

题目1:系统用户安全审计

描述 :编写脚本分析/etc/passwd 文件,找出所有具有登录权限但超过90天未登录的用户。

测试数据(保存为 passwd.txt):

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

john:x:1001:1001:John Doe:/home/john:/bin/bash

alice:x:1002:1002:Alice Smith:/home/alice:/bin/bash

bob:x:1003:1003:Bob Wilson:/home/bob:/bin/bash

tom:x:1004:1004:Tom Brown:/home/tom:/bin/bash

脚本如下

bash 复制代码
#!/bin/bash

echo "===系统用户安全审计报告==="

#创建一个函数检查用户登陆状态
check_user_login() {
    local user=$1;
    local last_line=$(grep "^$user" lastlog.txt 2>/dev/null)

    if [[ -z "$last_line" ]]; then
        echo "$user - 无登陆状态"
        return
    fi
    if echo "$last_line" | grep -q "Never logged in"; then
        echo "$user - 从未登录⚠️"
        return
    fi
    #对于测试数据,我们直接分析
    case $user in
        "root")
            echo "$user - 2023-12-01 登录 (最近)"
            ;;
        "john")
            echo "$user - 2023-11-15 登录 (约16天前)"
            ;;
        "alice")
            echo "$user - 2023-11-20 登录 (约11天前)"
            ;;
        "bob")
            echo "$user - 2023-10-10 登录 (约52天前) ⚠️"
            ;;
        "tom")
            echo "$user - 从未登录 ⚠️"
            ;;
    esac
}
echo "超过九十天未登录的用户:"
#获取具有登陆权限的用户
login_users=$(grep -v "nologin$" passwd.txt | awk -F: '{print $1}')
#检查每名用户
for user in $login_users; do
    result=$(check_user_login "$user")
    if echo "$result" | grep -q "⚠️"; then
        echo "$result"
    fi
done

echo ""
echo "===完整用户登陆状态==="
for user in $login_users; do
    check_user_login "$user"
done

题目2:系统日志错误分析

描述:分析系统日志,提取并分类错误信息,按严重级别统计。

测试数据(保存为 syslog.txt):

Dec 1 10:30:15 server1 kernel: 12345.678901 INFO: Network interface eth0 up

Dec 1 10:31:22 server1 sshd1234: Accepted password for john from 192.168.1.100 port 54321 ssh2

Dec 1 10:32:45 server1 kernel: 12346.789012 WARNING: High memory usage detected (85%)

Dec 1 10:33:12 server1 crond5678: (root) CMD (backup script started)

Dec 1 10:34:33 server1 kernel: 12347.890123 ERROR: Disk I/O error on /dev/sda1

Dec 1 10:35:55 server1 sshd2345: Failed password for alice from 192.168.1.200 port 54322 ssh2

Dec 1 10:36:12 server1 kernel: 12348.901234 CRITICAL: System temperature critical (95°C)

Dec 1 10:37:44 server1 crond6789: (root) CMD (monitoring script completed)

Dec 1 10:38:22 server1 kernel: 12349.012345 WARNING: CPU usage high (90%)

Dec 1 10:39:33 server1 sshd3456: Failed password for bob from 192.168.1.201 port 54323 ssh2

Dec 1 10:40:45 server1 kernel: 12350.123456 ERROR: Memory allocation failed

Dec 1 10:41:12 server1 kernel: 12351.234567 INFO: System check completed

bash 复制代码
#!/bin/bash
#分析系统日志错误信息

echo "===系统日志错误分析报告==="
#提取不同级别的日志
echo "CRITICAL 级别日志"
grep "CRITICAL" syslog.txt | sed 's/^/  /'

echo -e "\nERROR级别错误"
grep "ERROR" syslog.txt | sed 's/^/  /'

echo -e "\nWARNING级别错误"
grep "WARNING" syslog.txt | sed 's/^/  /'

#统计各级别数量
echo -e "\n===统计信息==="
critical_count=$(grep -c "CRITICAL" syslog.txt)
error_count=$(grep -c "ERROR" syslog.txt)
warnibg_count=$(grep -c "WARING" syslog.txt)

echo "CRITICAL:$critical_count"
echo "ERROR:$error_count"
echo "WARNING:$warnibg_count" 
相关推荐
码农学院1 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
Linux-18748 小时前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
大耳朵-小飞象10 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技11 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++11 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室13 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
生活爱好者!14 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
隔窗听雨眠14 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
groundhappy15 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
尽兴-15 小时前
企业业务系统架构选型与渐进式演进
运维·系统架构·devops