希望互相学习,共同进步
1.背景
最近准备查询一下各服务器的系统信息,可是十几台太多了,单个查询记录还可能记录错误。考虑做自动化脚本,一键生成系统信息,这样快速自动化实现查询。以下为公司 xintong 同事修改的脚本,觉得很实用很赞,贴出来记录共享。
2. 编写脚本
1)系统信息
查询截图1:
脚本片段1:
#!/bin/bash
clear
LogFileName=polling.$(date +%F-%T)
EchoFormat=$(for (( i=0;i<30;i++ ));do echo -n "=";done)
# 系统信息
SystemInfo(){
printf "${EchoFormat} 系统信息 ${EchoFormat}\n"
printf "系统类型: %-10s\n" $(uname -a| awk '{print $NF}')
printf "系统版本: %-10s\n" "$(cat /etc/redhat-release)"
printf "内核信息: %-10s\n" $(uname -r)
printf "主机名: %-10s\n" $(uname -n)
printf "编码格式: %-10s\n" ${LANG}
printf "系统当前时间: %-10s %-10s\n" $(date +%F) $(date +%T)
printf "系统运行负载: %-4s %-1s\n" $(uptime | awk -F: '{print $5 }'|awk -F, '{print $1,"%"}')
printf "系统运行天数: %-10s\n" $(uptime |awk '{print $3}')
printf "在线用户人数: %-3s\n" $(w|tail -n +3|wc -l)
who
echo -e "\n"
printf "SELinux: %-10s\n" $(grep "SELINUX=[d|e|p]" /etc/selinux/config |awk -F= '{print $2}')
echo -e "最后一次修改时间: $(uptime -p)"
echo -e "IP地址: $(hostname -I | cut -d' ' -f1)"
echo -e "Cpu处理器: $(lscpu | grep "Model name:" | sed 's/Model name:\s*//')"
echo -e "内存空间: $(free -h | awk '/^Mem:/ { print $3 "/" $2 }')"
echo -e "交换空间: $(free -h | awk '/^Swap:/ { print $3 "/" $2 }')"
}
2) CPU信息 
查询截图2:
脚本片段2:
# CPU信息 CpuInfo(){ MemonyId=$(top -b -n1|awk 'NR==3'|awk -F, '{print $4}'| cut -c 1-5) MemonyUse=$(echo "100-${MemonyId}" |bc) printf "${EchoFormat} CPU信息 ${EchoFormat}\n" printf "逻辑CPU核数: %-3s\n" $(grep "processor" /proc/cpuinfo|sort -u|wc -l) printf "物理CPU核数: %-3s\n" $(grep "physical id" /proc/cpuinfo |sort -u|wc -l) printf "CPU架构: %-3s\n" $(uname -m) printf "CPU设置型号: %-3s\n" "$(grep "model name" /proc/cpuinfo |awk -F: '{print $2}'|sort -u|cut -c 2-50)" echo -e "CPU 1分钟负载: `awk '{printf "%15s",$1}' /proc/loadavg`" echo -e "CPU 5分钟负载: `awk '{printf "%15s",$2}' /proc/loadavg`" echo -e "CPU10分钟负载: `awk '{printf "%15s",$3}' /proc/loadavg`" printf "使用CPU占比: %-1s %-1s\n" ${MemonyUse} % printf "空闲CPU占比: %-1s %-1s\n" ${MemonyId} % printf "占用CPU Top10信息:\n\n" ps -eo user,pid,pcpu,pmem,args --sort=-pcpu |head -n 10 }
3)内存信息 
查询截图3:
脚本片段3:
# Memory信息
MemoryInfo(){
printf "${EchoFormat} 内存信息 ${EchoFormat}\n"
printf "总共内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $2}')
printf "使用内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $3}')
printf "剩余内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $4}')
printf "内存使用占比: %-1s %-1s\n" $(free | grep -i mem |awk '{print $6/$2*100}'|cut -c1-5) %
printf "占用内存排名前10的soft:\n\n"
ps -eo user,pid,pcpu,pmem,args --sort=-pmem |head -n 10
}
4)各分区使用率、Swap信息 
查询截图4:
脚本片段4:
# 磁盘使用量排序:
Disk_Info() {
printf "${EchoFormat} 各分区使用率 ${EchoFormat}\n"
df -h
echo
}
# Swap信息
SwapInfo(){
printf "${EchoFormat} Swap信息 ${EchoFormat}\n"
printf "Swap总大小: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $2}')
printf "已用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $3}')
printf "可用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $4}')
}
5)网络信息 
查询截图5:
脚本片段5:
# 网络信息
NetworkInfo(){
printf "${EchoFormat} 网络信息 ${EchoFormat}\n"
printf "IP地址: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
printf "网关: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep "netmask"|grep -v 127.0.0.1|awk '{print $4}')
printf "DNS: %-1s %-1s %-1s %-1s %-1s\n" $(grep "nameserver" /etc/resolv.conf | awk '{print $2}')
if (ping -c2 -w2 www.baidu.com &>/dev/null);then
printf "网络是否连通: %s\n" 是
printf "公网IP地址: %s\n" $(curl -s ip.sb)
else
printf "网络是否连通: %s\n" 否
fi
}
6)docker检查 
查询截图6:
脚本片段6:
# docker检查
DockerInfo(){
printf "${EchoFormat} docker运行情况 ${EchoFormat}\n"
printf "当前正在运行的容器:\n $(docker ps --format "{{.Names}}")\n"
printf "当前没有运行的容器:\n $(docker ps --format "{{.Names}}"|grep Exited)\n"
}
BATCH_TIME=`date +'%Y-%m-%d'`
All(){
SystemInfo
CpuInfo
MemoryInfo
Disk_Info
SwapInfo
NetworkInfo
DockerInfo
}
> /root/system_check/system_check_${BATCH_TIME}.log
All >> /root/system_check/system_check_${BATCH_TIME}.log
3.总结 
以上脚本片段整合到一起之后,如/root/system_check /system_info.sh ,便能自动生成系统的信息,很方便。
项目管理--相关知识
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-优快云博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-优快云博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-优快云博客
Oracle其他文档,希望互相学习,共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-优快云博客
oracle 跟踪文件--审计日志_oracle审计日志-优快云博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-优快云博客