概述:以前做一个巡检脚本,需要各个方面的技能,shell/html/sql,揉到一起,做个好点的架构可能要憋上好一段时间吧,现在有了AI,我的天,短短一会儿就搞定了。
- 先看一下效果
页面有索引,还能鼠标高亮,内容有滚动条,界面美观,想要添加检查项,你只需要维护这个列表就可以了,要加什么检查,写个项目,加上sql。这个文件既可以写到主代码里,也可以维护一个单独的sql文件,再扩充一下,加上一个系统检查的模块,再加上一个性能检查的模块,都是很简单的工作。
感觉初级开发的就要下岗了,唉!
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 <
body {
font-family: Arial, sans-serif;
margin: 0;
color: #333;
display: flex;
}
.index {
width: 200px; /* 索引栏宽度,可根据需要调整 */
background-color: #f9f9f9;
padding: 20px;
box-sizing: border-box;
border-right: 1px solid #eaeaea;
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.05);
height: 100vh; /* 让索引栏高度占满视口 */
overflow-y: auto; /* 当内容超出高度时显示竖向滚动条 */
position: fixed; /* 固定索引栏位置 */
top: 0;
left: 0;
}
.index h2 {
color: #3498db;
font-size: 1.3em;
margin-bottom: 20px;
text-align: center;
text-transform: uppercase;
letter-spacing: 1px;
}
.index ul {
list-style-type: none;
padding: 0;
}
.index li {
margin-bottom: 8px; /* 减少列表项之间的底部间距 */
transition: all 0.3s ease;
}
.index a {
text-decoration: none;
color: #333;
font-size: 0.9em; /* 适当缩小字体大小 */
display: block;
padding: 4px 8px; /* 减少内边距 */
border-radius: 5px;
transition: all 0.3s ease;
}
.index a:hover {
background-color: #3498db;
color: white;
transform: translateX(5px);
}
.content {
flex: 1;
padding: 20px;
margin-left: 200px; /* 留出索引栏的宽度 */
overflow-x: auto; /* 表格太宽时显示横向滚动条 */
overflow-y: auto; /* 内容过长时显示竖向滚动条 */
}
/* 修改标题样式,使其固定 */
.fixed-title {
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 10px;
position: fixed;
top: 0;
left: 200px; /* 确保标题从索引栏右侧开始 */
right: 0;
background-color: white;
z-index: 1; /* 确保标题显示在内容上方 */
padding-left: 20px;
box-sizing: border-box;
}
h2 {
color: #3498db;
margin-top: 50px; /* 增大小标题的上方间距 */
word-wrap: break-word; /* 允许单词换行 */
white-space: normal; /* 正常换行 */
}
table {
font-size: 11px;
color: #333333;
border-width: 1px;
border-color: #3A3A3A;
border-collapse: collapse;
min-width: 100%; /* 表格最小宽度为容器宽度 */
}
th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #517994;
background-color: #B2CFD8;
}
tr:hover td {
background-color: #DFEBF1;
}
td {
border-width: 1px;
padding: 8px;
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-top: 20px; /* 适当增加表格容器与小标题之间的间距 */
margin-bottom: 40px; /* 加大表格的下间距 */
overflow-x: auto; /* 添加横向滚动条 */
overflow-y: auto; /* 添加竖向滚动条 */
max-height: 300px; /* 设置最大高度,可根据需要调整 */
}
EOF # 生成索引 for query in "${QUERIES[@]}"; do title=$(echo "$query" | cut -d'|' -f1) id=$(echo "$title" | tr '[:upper:]' '[:lower:]' | tr -d ' ') echo " done cat <索引
Oracle Database Report
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 " echo ' # 使用sqlplus生成HTML表格 sqlplus_output=$(sqlplus -S -M "HTML ON" "$DB_USER/$DB_PASSWORD@$DB_CONNECTION_STRING" < SET PAGESIZE 50000 SET LINESIZE 1000 SET FEEDBACK OFF SET HEADING ON $sql EOF ) # 检查sqlplus执行结果 if [ $? -ne 0 ]; then echo " Error executing query: $title else echo "$sqlplus_output" >> "$OUTPUT_HTML" fi echo ' done # 闭合HTML文件 cat <$title
" >> "$OUTPUT_HTML"
EOF
echo "Report generated: $OUTPUT_HTML"