Linux服务器系统自动巡检脚本生成html报告

Linux服务器系统⾃动巡检脚本⽣成html报告⼀、前⾔
1、在上⼀篇⽂章⾥给⼤家介绍,这篇⽂章介绍linux服务巡检脚本⽣成html报告。
2、脚本依然是简单脚本语句的堆积,⽅便⼤家⼆次编辑使⽤。
3、项⽬已经上传到我的github上
项⽬地址:
⼆、注意事项与报告部分截图
⼀定注意阅读git上的README.md说明,避免部分信息⽆法正常显⽰
三、README.md
1、使⽤root⽤户执⾏
2、使⽤说明
1)、脚本中 ifconfig、mpstat、iostat命令有依赖,需要安装相关依赖包yum -y install bc sysstat net-tools
2)、执⾏完巡检之后,将在脚本所在的路径下⽣成html巡检结果报告,如下192.168.31.102os_linux_summary.html
3)、巡检项信息如下(其他统计项可根据实际需要⾃⾏添加)
1)、系统基本信息
2)、cpu信息
3)、ip⽹络信息
4)、cpu使⽤率
5)、连接数信息
6)、系统限制信息
7)、内存使⽤信息
8)、磁盘使⽤信息
9)、⽹络流量情况/系统资源变化网站生成系统
10)、cpu消耗情况前10排⾏
11)、cpu消耗按内存情况前10排⾏
12)、磁盘io情况
13)、系统定时任务列表
14)、系统定时任务脚本内容
四、脚本内容
#!/bin/bash
ipaddress=`ip a|grep "global"|awk '{print $2}'|awk -F/'{print $1}'`
file_output=${ipaddress}'os_linux_summary.html'
td_str=''
th_str=''
#yum -y install bc sysstat net-tools
create_html_css(){
echo-e "<html>
<head>
<style type="text/css">
body        {font:12px Courier New,Helvetica,sansserif; color:black; background:White;}
table,tr,td {font:12px Courier New,Helvetica,sansserif; color:Black; background:#FFFFCC; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;}    th          {font:bold 12px Courier New,Helvetica,sansserif; color:White; background:#0033FF; padding:0px 0px 0px 0px;}
h1          {font:bold 12pt Courier New,Helvetica,sansserif; color:Black; padding:0px 0px 0px 0px;}
</style>
</head>
<body>"
}
create_html_head(){
echo-e "<h1>$1</h1>"
}
create_table_head1(){
echo-e "<table width="68%" border="1" bordercolor="#000000" cellspacing="0px" >"
}
create_table_head2(){
echo-e "<table width="100%" border="1" bordercolor="#000000" cellspacing="0px" >"
}
create_td(){
td_str=`echo$1| awk 'BEGIN{FS="|"}''{i=1; while(i<=NF) {print "<td>"$i"</td>";i++}}'`
}
create_th(){
th_str=`echo$1|awk 'BEGIN{FS="|"}''{i=1; while(i<=NF) {print "<th>"$i"</th>";i++}}'`
}
create_tr1(){
create_td "$1"
echo-e "<tr>
$td_str
</tr>" >> $file_output
}
create_tr2(){
create_th "$1"
echo-e "<tr>
$th_str
</tr>" >> $file_output
}
create_tr3(){
echo-e "<tr><td>
<pre style=\"font-family:Courier New; word-wrap: break-word; white-space: pre-wrap; white-space: -moz-pre-wrap\" >
`cat $1`
</pre></td></tr>" >> $file_output
器械消毒}
create_table_end(){
echo-e "</table>"
}
create_html_end(){
echo-e "</body></html>"
}
NAME_VAL_LEN=12
name_val (){
printf "%+*s | %s\n""${NAME_VAL_LEN}""$1""$2"
}
get_physics(){USB重定向
name_val "巡检时间""`date`"
name_val "主机名" "`uname -n`"
name_val "系统版本" "`cat/etc/{oracle,redhat,SuSE,centos}-release 2>/dev/null|sort-ru|head -n1`"
name_val "内核版本" "`uname -r`"
name_val "架构" "CPU=`lscpu|grep Architecture|awk -F: '{print $2}'|sed 's/^[[:space:]]*//g'`;OS=`getconf LONG_BIT`-bit"
}
get_cpuinfo () {
file="/proc/cpuinfo"
virtual=`grep -c ^processor "${file}"`
physical=`grep 'physical id' "${file}" | sort -u | wc -l`
cores=`grep 'cpu cores' "${file}" | head -n 1 | cut -d: -f2`
cores=`grep 'cpu cores' "${file}" | head -n 1 | cut -d: -f2`
model=`grep "model name" "${file}"|sort -u|awk -F: '{print $2}'`
speed=`grep -i "cpu MHz" "${file}"|sort -u|awk -F: '{print $2}'`
cache=`grep -i "cache size" "${file}"|sort -u|awk -F: '{print $2}'`
SysCPUIdle=`vmstat | sed -n '$ p' | awk '{print $15}'`
[ "${physical}" = "0" ] && physical="${virtual}"
[ -z "${cores}" ] && cores=0
本地摄像头cores=$((${cores}* ${physical}));
htt=""
if [ ${cores} -gt 0 -a $cores -lt $virtual ]; then htt=yes; else htt=no; fi
name_val "线程" "physical = ${physical}, cores = ${cores}, virtual = ${virtual}, hyperthreading = ${htt}"
name_val "cpu型号" "${physical}*${model}"
name_val "速度" "${virtual}*${speed}"
name_val "缓存" "${virtual}*${cache}"
name_val "CPU空闲率(%)" "${SysCPUIdle}%"
}
get_netinfo(){
echo "interface | status | ipadds    |      mtu    |  Speed    |    Duplex" >>/tmp/tmpnet_h1_`date +%y%m%d`.txt
for ipstr in `ifconfig -a|grep ": flags"|awk  '{print $1}'|sed 's/.$//'`
do
ipadds=`ifconfig ${ipstr}|grep -w inet|awk '{print $2}'`
mtu=`ifconfig ${ipstr}|grep mtu|awk '{print $NF}'`
speed=`ethtool ${ipstr}|grep Speed|awk -F: '{print $2}'`
duplex=`ethtool ${ipstr}|grep Duplex|awk -F: '{print $2}'`
echo "${ipstr}"  "up" "${ipadds}" "${mtu}" "${speed}" "${duplex}"\
|awk '{print $1,"|", $2,"|", $3,"|", $4,"|", $5,"|", $6}'  >>/tmp/tmpnet1_`date +%y%m%d`.txt
done
}
get_cpuuse(){
echo ">>>>>>>####  cpu使⽤率  >>>>>>>####" >>/tmp/tmp_cpuuse_`date +%y% m%d`.txt
mpstat -P ALL 10 6 >>/tmp/tmp_cpuuse_`date +%y%m%d`.txt
}
get_connections (){
filemax=`cat/proc/sys/fs/file-max`
name_val "Number of concurrent connections""${filemax}"
}
get_ulimitinfo(){
echo">>>>>>>####  系统限制最⼤进程数  >>>>>>>####" >>/tmp/tmp_ulimitinfo_` date +%y%m%d`.txt
ulimit -a >>/tmp/tmp_ulimitinfo_`date +%y%m%d`.txt
}
get_meminfo(){
echo"Locator  |Size    |Speed      |Form Factor  | Type      |    Type Detail" >>/tmp/tmpmem3_h1_`date +%y%m%d`.txt
dmidecode| grep -v "Memory Device Mapped Address"|grep -A12 -w "Memory Device" \
|egrep "Locator:|Size:|Speed:|Form Factor:|Type:|Type Detail:" \
|awk -F: '/Size|Type|Form.Factor|Type.Detail|^[\t ]+Locator/{printf("|%s", $2)}/^[\t ]+Speed/{print "|" $2}' \
|grep -v "No Module Installed" \
|awk -F"|"'{print $4,"|", $2,"|", $7,"|", $3,"|", $5,"|", $6}' >>/tmp/tmpmem3_t1_`date +%y%m%d`.txt
free -glht >>/tmp/tmpmem2_`date +%y%m%d`.txt
memtotal=`vmstat -s | head -1 | awk '{print $1}'`
avm=`vmstat -s| sed -n '3p'| awk '{print $1}'`
name_val "Mem_used_rate(%)""`echo "100*${avm}/${memtotal}" | bc`%" >>/tmp/tmpmem1_`date +
%y%m%d`.txt
}
get_diskinfo(){
echo"Filesystem        |Type  |Size |  Used  | Avail | Use%  | Mounted on | Opts" >>/tmp/tmpdisk_h1_`date +%y%m%d`.txt
df -ThP|grep -v tmpfs|sed '1d'|sort >/tmp/tmpdf1_`date +%y%m%d`.txt
mount-l|awk '{print $1,$6}'|grep ^/|sort >/tmp/tmpdf2_`date +%y%m%d`.txt
join /tmp/tmpdf1_`date +%y%m%d`.txt /tmp/tmpdf2_`date +%y%m%d`.txt\
|awk '{print $1,"|", $2,"|", $3,"|", $4,"|", $5,"|", $6,"|", $7,"|", $8}' >>/tmp/tmpdisk_t1_`date +%y%m%d`.txt
lsblk >>/tmp/tmpdisk1_`date +%y%m%d`.txt
for disk in `ls-l /sys/block|awk '{print $9}'|sed '/^$/d'|grep -v fd`
do
echo"${disk}" `cat/sys/block/${disk}/queue/scheduler`  >>/tmp/tmpdisk2_`date +%y%m%d`.txt
done
pvs >>/tmp/tmpdisk3_`date +%y%m%d`.txt
echo"======================  =====  =====  =====  =====  =====  ==========  =======" >>/tmp/tmpdisk3_`date +%y%m%d`.txt
vgs >>/tmp/tmpdisk3_`date +%y%m%d`.txt
vgs >>/tmp/tmpdisk3_`date +%y%m%d`.txt
echo"======================  =====  =====  =====  =====  =====  ==========  =======" >>/tmp/tmpdisk3_`date +%y%m%d`.txt
lvs >>/tmp/tmpdisk3_`date +%y%m%d`.txt
}
get_topproc(){
#os load
echo">>>>>>>####  ⽹络流量情况  >>>>>>>####" >>/tmp/tmpload_`date +%y%m %d`.txt
sar -n DEV 10 6 >>/tmp/tmpload_`date +%y%m%d`.txt
echo">>>>>>>####  系统资源变化  >>>>>>>####" >>/tmp/tmpload_`date +%y%m %d`.txt
vmstat -S M 10 6  >>/tmp/tmpload_`date +%y%m%d`.txt
#top cpu
mpstat 1 5 >>/tmp/tmptopcpu_`date +%y%m%d`.txt
环氧大豆油生产工艺echo">>>>>>>####  消耗CPU前⼗排⾏  >>>>>>>####" >>/tmp/tmptopcpu_`date +%y%m%d`.txt
ps aux|head -1 >>/tmp/tmptopcpu_`date +%y%m%d`.txt
ps aux|grep -v PID|sort-rn -k +3|head  >>/tmp/tmptopcpu_`date +%y%m%d`.txt
#top mem
无线收发器
echo">>>>>>>####  消耗内存前⼗排⾏  >>>>>>>####" >>/tmp/tmptopmem_`date +%y%m%d`.txt
ps aux|head -1 >>/tmp/tmptopmem_`date +%y%m%d`.txt
ps aux|grep -v PID|sort-rn -k +4|head  >>/tmp/tmptopmem_`date +%y%m%d`.txt
echo"TOP10 CPU Resource Process" >>/tmp/tmptopmem_`date +%y%m%d`.txt
top -bn1 -o "%CPU"|sed  -n '1,17p'
#top i/o
echo">>>>>>>####  磁盘io情况  >>>>>>>####" >>/tmp/tmptopio_`date +%y%m% d`.txt
iostat -k -d 10 5  >>/tmp/tmptopio_`date +%y%m%d`.txt
}
get_crontablist(){
crontab -l >>/tmp/tmp_crontab_`date +%y%m%d`.txt
if[-s /tmp/tmp_crontab_`date +%y%m%d`.txt ]; then
echo'ths file is not empyt and file info'
else
echo'#### ⽆定时任务 ####' >>/tmp/tmp_crontab_`date +%y%m%d`.txt
fi
}
get_crontab_content(){
crontab_content_log=/tmp/tmp_crontab_content_`date +%y%m%d`.txt
crontab -l|awk -F ' ''{ print $NF}' >>$crontab_content_log
contrab_num=`crontab -l|awk -F ' ''{ print $NF}'|wc -l`
if[$contrab_num-ne 0 ];then
count=1
while[$count-le$contrab_num]
do
echo">>>>>>>####  获取系统定时任务脚本$count内容开始  >>>>>>>####" >> /tmp/tmp_crontab_shellcontent_`date +%y%m%d`.txt
cat `sed -n -e "${count}p"$crontab_content_log` >>/tmp/tmp_crontab_shellcontent_`date +%y%m%d`.txt
echo-e "\n>>>>>>>####  获取系统定时任务脚本$count内容结束  >>>>>>>### #\n" >>/tmp/tmp_crontab_shellcontent_`date +%y%m%d`.txt
count=$[${count}+1]
done
else
echo'#### ⽆定时执⾏脚本 ####' >>/tmp/tmp_crontab_shellcontent_`date +%y%m%d`.txt
fi
}
create_html(){
rm-rf $file_output
touch $file_output
create_html_css >> $file_output
create_html_head "系统基本信息" >> $file_output
create_table_head1 >> $file_output
get_physics >>/tmp/tmpos_summ_`date +%y%m%d`.txt

本文发布于:2024-09-23 01:25:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/341817.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:脚本   系统   信息   任务   巡检   需要   情况
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议