ChatGPT开发Linux基线检查脚本

释放双眼,带上耳机,听听看~!
了解如何使用ChatGPT开发用于Linux系统基线检查的脚本,包括检查系统运行时间、已登录用户数、磁盘空间、内存使用情况等

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情

1.过程

最近大火的ChatGPT号称可以干掉程序员,今天测试就用ChatGPT开发一个Liunx基线检查脚本。

ChatGPT开发Linux基线检查脚本
使用vi在liunx中复制这段脚本创建一个脚本文件,看一下效果。(脚本记得chmod添加执行权限)

执行看下效果

ChatGPT开发Linux基线检查脚本
可以看到检查项主要有:

ChatGPT开发Linux基线检查脚本
这显然不能满足我们的要求,连端口开放信息都没有

ChatGPT开发Linux基线检查脚本
他居然让我自己合并,不智能,让他合并一下

ChatGPT开发Linux基线检查脚本
再去系统上粘贴运行一下,已经可以检查敏感端口了

ChatGPT开发Linux基线检查脚本
再添加一个异常用户登录的检查,这次果然成长了,chatGPT先把当前的要检查的脚本列出来,然后自己合并脚本了,点赞!

ChatGPT开发Linux基线检查脚本

再运行一下,已经可以检查登录用户了

ChatGPT开发Linux基线检查脚本
接下来再添加一些其他的检查项:

检查长期不登录用户

检查密码有效期

系统关键目录权限

生成的脚本较长的话中间会有终端的可能会中断,需要重新生成

最后让脚本把注释改完中文,添加分割线。

ChatGPT开发Linux基线检查脚本

最后看一下这个脚本吧。

#!/bin/bash 
echo "开始 Linux 系统基线,弱口令,以及未激活用户帐户检查" 
# 检查系统正常运行时间 
echo -n "系统正常运行时间: " 
uptime 
echo "-------------------------------" 

# 检查已登录用户数 
echo -n "已登录用户数: " 
who | wc -l 
echo "-------------------------------" 

# 检查可用磁盘空间 
echo -n "磁盘空间: " 
df -h 
echo "-------------------------------" 

# 检查内存使用情况 
echo -n "内存使用情况: " 
free -h 
echo "-------------------------------" 

# 检查内存使用最多的前 5 个进程 
echo -n "内存使用最多的前 5 个进程: " 
ps -eo pmem,pid,user,args | sort -k 1 -r | head -6 
echo "-------------------------------" 

# 检查高风险开放端口 
echo "正在检查高风险开放端口..." 
high_risk_ports=(21 22 23 25 53 80 110 443 1433) 
for port in "${high_risk_ports[@]}"; do 
    if lsof -i :$port; then 
        echo "高风险端口 $port 已开放!" 
    fi
 done 
 echo "-------------------------------" 
 
 # 检查意外的用户登录 
 echo "正在检查意外的用户登录..." 
 expected_users=(root admin user1) 
 logged_in_users=($(who | awk '{print $1}')) 
 for user in "${logged_in_users[@]}"; do 
     if [[ ! " ${expected_users[@]} " =~ " ${user} " ]]; then 
         echo "意外的用户登录: $user" 
     fi 
 done 
 echo "-------------------------------" 
 
# 检查不活动的用户帐户 
echo "检查不活动的用户帐户..." 
inactive_period=90 
today=$(date +%s) 
for user in $(cut -d: -f1 /etc/shadow); do 
    last_login=$(lastlog -u $user | tail -1 | awk '{print $NF}') 
    if [[ $last_login == "Never" ]]; then 
        echo "用户 $user 从未登录过!" 
     else 
         last_login_seconds=$(date -d "$last_login" +%s) 
             if [ -n "$last_login_seconds" ]; then 
                 if (( $today - $last_login_seconds >= $inactive_period*24*60*60 )); then
                     echo "用户 $user 已经不活动超过 $inactive_period 天!" 
                 fi 
              else 
                  echo "计算用户 $user 的最后一次登录时间失败" 
              fi 
       fi 
 done 
 echo "-------------------------------" 
 
 # 定义关键系统目录列表 
 critical_dirs=(/bin /sbin /usr/bin /usr/sbin /etc /boot /lib /lib64 /root) 
 # 遍历每个关键目录 
 for dir in "${critical_dirs[@]}"; do 
 # 获取该目录的权限
 permissions=$(stat -c "%a" $dir) 
 # 检查权限是否过于宽松 
 if [ $permissions -gt 755 ]; then 
     echo "目录 $dir 的权限过于宽松:$permissions" 
 fi 
 done 
 echo "-------------------------------" 
 
 echo "完成了 Linux 系统基线检查"


2. 总结

当然,chatgpt还有很多问题,比如生成较长的脚本的时候经常会卡住,经常会让你重新请求或者重新登录,再比如脚本里一些字段没有判空会造成执行失败,但总体来说,如果让他完成确定的单个需求,速度和代码质量还真的可以。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

AI技术发展与就业前景探讨

2023-12-14 15:15:14

AI教程

OpenAI GPT-4更新后变懒惰?用户抱怨响应缓慢和敷衍

2023-12-14 15:19:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索