暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

体验AI制作巡检脚本

godba 2025-02-13
121
上边蓝字关注我们

    概述:以前做一个巡检脚本,需要各个方面的技能,shell/html/sql,揉到一起,做个好点的架构可能要憋上好一段时间吧,现在有了AI,我的天,短短一会儿就搞定了。


  1. 先看一下效果

页面有索引,还能鼠标高亮,内容有滚动条,界面美观,想要添加检查项,你只需要维护这个列表就可以了,要加什么检查,写个项目,加上sql。这个文件既可以写到主代码里,也可以维护一个单独的sql文件,再扩充一下,加上一个系统检查的模块,再加上一个性能检查的模块,都是很简单的工作。

      "DBA_USERS|SELECT * FROM DBA_USERS;"
      "DBA_TABLESPACES|SELECT * FROM DBA_TABLESPACES;"
      "DBA_OBJECTS_COUNT|SELECT owner, COUNT(*) AS object_count FROM DBA_OBJECTS GROUP BY owner;"

    感觉初级开发的就要下岗了,唉!

    2.来欣赏一下AI的代码吧

      #!/bin/bash
      source ~/.bash_profile


      # 输出HTML文件
      OUTPUT_HTML="oracle_report.html"


      # 数据库连接信息
      DB_USER="zhyu"
      DB_PASSWORD="zhyu"
      DB_CONNECTION_STRING="vm2apex"


      # 定义查询列表:格式为 "标题|SQL查询"
      QUERIES=(
        "DBA_USERS|SELECT * FROM DBA_USERS;"
        "DBA_TABLESPACES|SELECT * FROM DBA_TABLESPACES;"
        "DBA_OBJECTS_COUNT|SELECT owner, COUNT(*) AS object_count FROM DBA_OBJECTS GROUP BY owner;"
      )


      # 初始化HTML文件
      cat <<EOF > "$OUTPUT_HTML"
      <!DOCTYPE html>
      <html>
      <head>
          <title>Oracle Database Report</title>
      <style>
          body {
              font-family: Arial, sans-serif;
              margin0;
              color#333;
              display: flex;
          }
          .index {
              width200px/* 索引栏宽度,可根据需要调整 */
              background-color#f9f9f9;
              padding20px;
              box-sizing: border-box;
              border-right1px solid #eaeaea;
              box-shadow2px 0 5px rgba(0000.05);
              height100vh/* 让索引栏高度占满视口 */
              overflow-y: auto; /* 当内容超出高度时显示竖向滚动条 */
              position: fixed; /* 固定索引栏位置 */
              top0;
              left0;
          }
          .index h2 {
              color#3498db;
              font-size1.3em;
              margin-bottom20px;
              text-align: center;
              text-transform: uppercase;
              letter-spacing1px;
          }
          .index ul {
              list-style-type: none;
              padding0;
          }
          .index li {
              margin-bottom8px/* 减少列表项之间的底部间距 */
              transition: all 0.3s ease;
          }
          .index a {
              text-decoration: none;
              color#333;
              font-size0.9em/* 适当缩小字体大小 */
              display: block;
              padding4px 8px/* 减少内边距 */
              border-radius5px;
              transition: all 0.3s ease;
          }
          .index a:hover {
              background-color#3498db;
              color: white;
              transformtranslateX(5px);
          }
          .content {
              flex1;
              padding20px;
              margin-left200px/* 留出索引栏的宽度 */
              overflow-x: auto; /* 表格太宽时显示横向滚动条 */
              overflow-y: auto; /* 内容过长时显示竖向滚动条 */
          }
          /* 修改标题样式,使其固定 */
          .fixed-title {
              color#2c3e50;
              border-bottom2px solid #3498db;
              padding-bottom10px;
              position: fixed;
              top0;
              left200px/* 确保标题从索引栏右侧开始 */
              right0;
              background-color: white;
              z-index1/* 确保标题显示在内容上方 */
              padding-left20px;
              box-sizing: border-box;
          }
          h2 {
              color#3498db;
              margin-top50px/* 增大小标题的上方间距 */
              word-wrap: break-word; /* 允许单词换行 */
              white-space: normal; /* 正常换行 */
          }
          table {
              font-size11px;
              color#333333;
              border-width1px;
              border-color#3A3A3A;
              border-collapse: collapse;
              min-width100%/* 表格最小宽度为容器宽度 */
          }
          th {
              border-width1px;
              padding8px;
              border-style: solid;
              border-color#517994;
              background-color#B2CFD8;
          }
          tr:hover td {
              background-color#DFEBF1;
          }
          td {
              border-width1px;
              padding8px;
              border-style: solid;
              border-color#517994;
              background-color#ffffff;
          }
          tr:nth-child(even) td {
              background-color#DFEBF1;
          }
          tr:nth-child(odd) td {
              background-color#ffffff;
          }
          tr:hover td {
              background-color#e0f7fa;
          }
         .table-container {
              margin-top20px/* 适当增加表格容器与小标题之间的间距 */
              margin-bottom40px/* 加大表格的下间距 */
              overflow-x: auto; /* 添加横向滚动条 */
              overflow-y: auto; /* 添加竖向滚动条 */
              max-height300px/* 设置最大高度,可根据需要调整 */
          }
      </style>
      </head>
      <body>
          <div class="index">
              <h2>索引</h2>
              <ul>
      EOF


      # 生成索引
      for query in "${QUERIES[@]}"; do
          title=$(echo "$query" | cut -d'|' -f1)
          id=$(echo "$title" | tr '[:upper:]' '[:lower:]' | tr -d ' ')
          echo "<li><a href='#$id'>$title</a></li>" >> "$OUTPUT_HTML"
      done


      cat <<EOF >> "$OUTPUT_HTML"
              </ul>
          </div>
          <!-- 修改标题部分 -->
          <div class="fixed-title">
              <h1>Oracle Database Report</h1>
              <div class="timestamp">Generated on: $(date)</div>
          </div>
          <div class="content">
              <!-- 留出标题的空间,适当增加高度 -->
              <div style="height: 60px;"></div>
      EOF


      # 执行每个查询并生成HTML表格
      for query in "${QUERIES[@]}"; do
          # 提取标题和SQL语句
          title=$(echo "$query" | cut -d'|' -f1)
          sql=$(echo "$query" | cut -d'|' -f2)
          id=$(echo "$title" | tr '[:upper:]' '[:lower:]' | tr -d ' ')


          echo "<h2 id='$id'>$title</h2>" >> "$OUTPUT_HTML"
          echo '<div class="table-container">' >> "$OUTPUT_HTML"


          # 使用sqlplus生成HTML表格
          sqlplus_output=$(sqlplus -S -M "HTML ON" "$DB_USER/$DB_PASSWORD@$DB_CONNECTION_STRING" <<EOF
          SET PAGESIZE 50000
          SET LINESIZE 1000
          SET FEEDBACK OFF
          SET HEADING ON
          $sql
      EOF
      )


          # 检查sqlplus执行结果
          if [ $? -ne 0 ]; then
              echo "<p>Error executing query: $title</p>" >> "$OUTPUT_HTML"
          else
              echo "$sqlplus_output" >> "$OUTPUT_HTML"
          fi


          echo '</div>' >> "$OUTPUT_HTML"
      done


      # 闭合HTML文件
      cat <<EOF >> "$OUTPUT_HTML"
          </div>
      </body>
      </html>
      EOF


      echo "Report generated: $OUTPUT_HTML"







      文章转载自godba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论