Liu Junqiao:生产环境中shell脚本实例

在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检脚本!


 1 #!/bin/bash
 2
 3 function system(){
 4 echo "#########################系统信息#########################"
 5 OS_TYPE=`uname`
 6 OS_VER=`cat /etc/redhat-release`
 7 OS_KER=`uname -a|awk ‘{print $3}‘`
 8 OS_TIME=`date +%F_%T`
 9 OS_RUN_TIME=`uptime |awk ‘{print $3}‘|awk -F, ‘{print $1}‘`
10 OS_LAST_REBOOT_TIME=`who -b|awk ‘{print $2,$3}‘`
11 OS_HOSTNAME=`hostname`
12
13 echo "    系统类型:$OS_TYPE"
14 echo "    系统版本:$OS_VER"
15 echo "    系统内核:$OS_KER"
16 echo "    当前时间:$OS_TIME"
17 echo "    运行时间:$OS_RUN_TIME"
18 echo "最后重启时间:$OS_LAST_REBOOT_TIME"
19 echo "    本机名称:$OS_HOSTNAME"
20 }
21 function network(){
22
23 echo "#########################网络信息#########################"
24 INTERNET=(`ifconfig|grep ens|awk -F: ‘{print $1}‘`)
25 for((i=0;i<`echo ${#INTERNET[*]}`;i++))
26 do
27   OS_IP=`ifconfig ${INTERNET[$i]}|head -2|grep inet|awk ‘{print $2}‘`
28   echo "      本机IP:${INTERNET[$i]}:$OS_IP"
29 done
30 curl -I http://www.baidu.com &>/dev/null
31 if [ $? -eq 0 ]
32 then echo "    访问外网:成功"
33 else echo "    访问外网:失败"
34 fi
35 }
36
37 function hardware(){
38
39 echo "#########################硬件信息#########################"
40 CPUID=`grep "physical id" /proc/cpuinfo |sort|uniq|wc -l`
41 CPUCORES=`grep "cores" /proc/cpuinfo|sort|uniq|awk -F: ‘{print $2}‘`
42 CPUMODE=`grep "model name" /proc/cpuinfo|sort|uniq|awk -F: ‘{print $2}‘`
43
44 echo "     CPU数量: $CPUID"
45 echo "     CPU核心:$CPUCORES"
46 echo "     CPU型号:$CPUMODE"
47
48 MEMTOTAL=`free -m|grep Mem|awk ‘{print $2}‘`
49 MEMFREE=`free -m|grep Mem|awk ‘{print $7}‘`
50
51 echo "  内存总容量: ${MEMTOTAL}MB"
52 echo "剩余内存容量: ${MEMFREE}MB"
53
54 disksize=0
55 swapsize=`free|grep Swap|awk {‘print $2‘}`
56 partitionsize=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk {‘print $3‘}`)
57 for ((i=0;i<`echo ${#partitionsize[*]}`;i++))
58 do
59 disksize=`expr $disksize + ${partitionsize[$i]}`
60 done
61 ((disktotal=\($disksize+$swapsize\)/1024/1024))
62
63 echo "  磁盘总容量: ${disktotal}GB"
64
65 diskfree=0
66 swapfree=`free|grep Swap|awk ‘{print $4}‘`
67 partitionfree=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk ‘{print $5}‘`)
68 for ((i=0;i<`echo ${#partitionfree[*]}`;i++))
69 do
70 diskfree=`expr $diskfree + ${partitionfree[$i]}`
71 done
72
73 ((freetotal=\($diskfree+$swapfree\)/1024/1024))
74
75 echo "剩余磁盘容量:${freetotal}GB"
76 }
77
78
79 function secure(){
80 echo "#########################安全信息#########################"
81
82 countuser=(`last|grep "still logged in"|awk ‘{print $1}‘|sort|uniq`)
83 for ((i=0;i<`echo ${#countuser[*]}`;i++))
84 do echo "当前登录用户:${countuser[$i]}"
85 done
86
87 md5sum -c --quiet /opt/passwd.db &>/dev/null
88 if [ $? -eq 0 ]
89 then echo "    用户异常:否"
90 else echo "    用户异常:是"
91 fi
92 }
93
94 function chksys(){
95 system
96 network
97 hardware
98 secure
99 }

脚本思路:因为监控的信息比较多,所以,用函数将这些功能分成4个模块、system() 系统信息模块、network()网络信息模块、hardware()硬件信息模块、secure()安全信息模块,最后通过chksys()将各个模块调用出来!

原文地址:https://www.cnblogs.com/liujunqiao/p/10738298.html

时间: 2024-10-09 19:51:07

Liu Junqiao:生产环境中shell脚本实例的相关文章

生产环境中使用脚本实现tomcat start|status|stop|restart

一.在实际生产环境中tomcat启动是在bin目录下采用自带脚本startup.sh启动:使用shutdown.sh关闭.如下图: 再如果对于新手来讲在不知道路径情况下重启是一件头痛的事情(注意没有reload,所以重启只能shutdown.sh在startup.sh):而且这里还有一个坑等着: 什么坑呢?   如图: tomcat服务是启动成功了的.那么我想停止服务用shutdown.sh,会出现什么呢? 进程还在而且成为了僵尸进程,万恶啊?居然关不了,终极方法kill -9 进程号.试试?

生产环境中shell

#!/bin/bash for i in `seq 1 254` do ping -c 1 192.168.238.$i > /dev/null if [ $? -eq 0 ] then echo "192.168.238.$i存活" else echo "192.168.238.$i不存活" >> /root/a.txt fi done 原文地址:https://www.cnblogs.com/sjzz/p/11597860.html

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明. 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个测试实例来测试升级等.在这种情况下,你的 Confluence 可以回运行 2 个不同的版本,而且也是非常常见的.这个文档将会知道你如何拷贝生产环境中的数据到一个测试实例中,同时测试环境的版本和生产环境中的版本还有可能是不同的. 在开始这个操作指南之前,

在生产环境中安全执行更新删除SQL脚本的技巧

今天在生产环境上解决问题,由于广发银行的管理制度是开发公司是不允许确生产环境的,所以我们只能把要更新的语句发给运营中心,由运营中心的投产人员执行,我们则在旁边看着:在他执行的时候发现了一个很有趣的技巧,现在分享出来. 我们知道每一次在生产环境中执行中执行更新删除语句的时候都要格外小心,要做好数据备份,但是即便这样对于一个做了分库分表设计,有十几个G的库来说更新一句SQL后发现忘记写WHERE语句或是语句写错了,恢复备份的成本都是相当高的. 我注意到运营中心的人在拿到我的SQL语句后,把它放到MS

[virtualenv]生产环境中使用virtualenv

virtualenv 对于python开发和部署都是好工具,可以隔离多个python版本和第三方库的版本,这里作者总结了几个常用python服务怎么样结合virtual部署 原文链接 Python 中我最喜欢的东西之一就是可以使用 virtualenv 去创建隔离的环境.非常简单的就可以在不同的项目中部署不同的python类库. 有一个比较棘手的问题就是在生产环境中使用virtualenv 部署几个不同的服务有一些配置上的不同. 于是我就从我的项目中收集了几种不同的服务的不同配置方式. 可以肯定

生产环境中tomcat的配置

生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/shutdown.sh来关闭tomcat. 而在生产环境中,我们要配置tomcat使其以daemon方式运行,这是因为: 以daemon运行不受终端影响,不会因为退出终端而停止运行 可以让tomcat以普通用户身份运行,可以让tomcat随linux启动而启动 如何将tomcat配置成守护进程 将tom

生产环境上shell的解读

一直以来对shell都不是很熟悉,只停留在基本的linux上操作上,这周因为定位问题接触到了生产环境上的脚本,因此作为引子学习一下.很多命令只是点到,等真正需要独立完成的时候再去学习. 1 #!/bin/sh 2 3 #set -x 打印出调试信息 4 MYNAME=rawload 5 eamid=$2 6 emsentityid=$1 7 WORK_DIR=${PM4H_APP}/module/rawload 8 LOAD_DIR=${PM4H_SPOOL}/${eamid}/${emsent

7个shell脚本实例--shell脚本练习必备

概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 一.监测Nginx访问日志Exception情况,并做相应动作 假设服务器环境为lnmp,监控出现Exception错误,并钉钉通知. #场景: #1.访问日志文件的路径:/data/logs/plateno-coupon-server/plateno-coupon-server.log#2.脚本死循环,每10秒检测一次,10秒的日志条数为300条

生产环境中CentOS7部署NET Core应用程序

NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 这段时间在使用Rabbit RPC重构公司的一套系统(微信相关),而最近相关检验(逻辑测试.压力测试)已经完成,接近部署至线上生产环境从而捣鼓了ASP.NET Core应用程序在CentOS上的部署方案,今天