使用shell编写一个检测系统参数的脚本

检测os的脚本

目的:学了shell语言后,根据已学编写一个shell的脚本实现检测部分系统参数实现邮件告警,

(之前刚刚学习写的不怎么完善和实用!)

[[email protected] scripts]# cat os.monitor.sh

#!/bin/bash

###########

#name=linux查看系统资源脚本

#auth=cml

#time:2015

###########

DATE=`date "+%F %H:%M:%S"`

HOST=`hostname`

###########

echo "check:$DATE"

check_yum(){

yum install -y sysstat

yum install -y iftop

yum install -y lsof

}

check_mail(){

rpm -qa | grep mailx-12.4-8.el6_6.x86_64

mail=`echo $?`

if [ $mail -eq 0 ]; then

echo "mail is installed"

else

yum install -y mailx

fi

service postfix status

mail=`echo $?`

if [ $mail -eq 0 ]; then

echo "postfix is running!"

else

echo "postfix not running"

service postfix start

echo "postfix successfully runnig"

fi

echo -e "\033[32m=========check_mail is ok========\033[0m"

##只是为了好看分隔

}

check_sys(){

#       echo "检查主机名,系统参数!"

echo -n "HOSTNAME:"

echo $HOST

echo -n "系统版本:"

cat /etc/issue

echo -n "系统的参数:"

cat /proc/version

echo -e "\033[32m=========check_sys is ok========\033[0m"

}

check_CPU(){

#       echo "检查CPU,LOAD,WA,IDEL情况!"

echo -n "CPU内核:"

cpu=`cat /proc/cpuinfo | grep processor | wc -l`

echo $cpu

echo -n "load:"

load1=`w | awk ‘NR==1 {print $10}‘ | awk -F ‘.‘ ‘{print $1}‘`

load2=w | awk ‘NR==1 {print $10}‘

echo $load2

if [ $load1 -lt $cpu ];  then

echo "send_mail to ********@qq.com"

echo "your cpu is normal! cpu=$cpu load balance=$load2  time:$DATE" | mail -s "check your CPU" ********@qq.com

else

echo "your load<cpu load=$load cpu=$cpu $DATE"

fi

echo -e "\033[32m=========check_CPU is ok========\033[0m"

}

check_mem(){

#       echo "检查内存使用情况!"

free=`free -m | awk ‘NR==2 {print $4}‘`

cache=`free -m | awk ‘NR==2 {print $7}‘`

echo -n "内存使用情况:"

mem=`echo $[free+cache]`

echo $mem

if [ $mem -lt 1000 ]; then

echo "send_mail to ********@qq.com"

echo "your mem is normal time:$DATE" | mail -s "check your mem " ********@qq.com

else

echo "your mem:$mem>1000 is abnormality time:$DATE"

fi

echo -e "\033[32m=========check_mem is ok========\033[0m"

}

check_network(){

#       echo "检查网卡eth0的流量!"

#        iftop -t >> /tmp/network

echo -n "接收端流量:"

# cat /tmp/network | grep send |  awk ‘NR==1 {print $4}‘

ifconfig eth0 | awk ‘NR==8 {print $3}‘ | awk -F ‘(‘ ‘{print $2}‘

echo -n "发送端流量:"

# cat /tmp/network | grep receive | awk ‘NR==1 {print $4}‘

ifconfig eth0 | awk ‘NR==8 {print $7}‘ | awk -F ‘(‘ ‘{print $2}‘

echo -e "\033[32m=========check_network is ok========\033[0m"

}

check_TCP(){

#       echo "检查TCP连接状态!"

echo -n "TCP连接状态:"

netstat -an | awk ‘/^tcp/{a[$NF]++}END{for (i in a)print i,a[i]}‘

listen=`netstat -an | awk ‘/^tcp/{a[$NF]++}END{for (i in a)print i,a[i]}‘ | awk ‘NR==2 {print $2}‘`

if [ $listen -gt 7 ]; then

echo "send_mail to ********@qq.com "

echo "your connection is normal! time:$DATE" | mail -s "check your TCP " ********@qq.com

else

echo "your now-listen>Normal-listen now-listen=$listen $DATE"

fi

echo -e "\033[32m=========check_TCP is ok========\033[0m"

}

check_DISK(){

#       echo "检查磁盘的使用情况!"

echo  "/分区的使用百分比:"

root=`df -h | awk ‘NR==3{print $4}‘ | awk -F "%" ‘{print $1}‘`

echo $root

echo  "INNODE使用百分比:"

df -i | awk ‘NR==3 {print $4}‘

if [ $root -lt 80 ]; then

echo "send_mail to ********@qq.com"

echo "your disk:/ is normal! time:$DATE " | mail -s "check your DISK" ********@qq.com

else

echo "your disk:/ greater than 80% /:$root time:$DATE"

fi

echo -e "\033[32m=========check_DISK is ok========\033[0m"

}

monitor2(){

check_sys

check_CPU

check_mem

check_network

check_TCP

check_DISK

}

monitor2 >> /tmp/$(hostname).txt

时间: 09-03

使用shell编写一个检测系统参数的脚本的相关文章

工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本

一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话"Hello World!!"   2> 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的版本信息.当前使用的内核版本.当前系统的主机名 方案: 规范Shell脚本的一般组成: 1> #! 环境声明(Sha-Bang)    2> # 注释文本 

在ubuntu linux 中编写一个自己的python脚本

在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来实现音乐的播放.注:本人ununut中安装了audacious,所以就以audacious为例,来实现音乐的播放. 第一步:进入一个目录,最好是自己特别选定的,如果用文件浏览器可以新建一个名为pmpy空白文档文件:如果是用终端可以输入命令:vi pmpy(可能会因为位置问题,需要添加sudo) 第二

【原】shell编写一个简单的jmeter自动化压测脚本

在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化.文中如有错误或者不妥之处,还望指教. 一.设计思路 1.初始化数据库(导入用户,清除数据等) 2.初始化缓存(使用了redis缓存优化系统) 3.执行压力测试 二.目录结构 目录解读: apache-jmeter-3.0 为jmeter程序目录 asserts.log 断言

使用shell编写一个脚本,磁盘超过80%邮件报警

方法1: 监控磁盘或CPU超过一定值邮件报警脚本: [[email protected] scripts]# cat check.sh #!/bin/bash LANG=en_US.UTF-8 cpuUsed=`top -n 1|awk -F '[, %]+' 'NR==3 {print100-$11}'` diskUsed=$(df -h|awk -F '[ %]+'  '/\/$/{print $5}') logFile=/tmp/jk.log function Sendmail(){ ma

如何用VBS编写一个简单的恶搞脚本

windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档: 随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项 在弹出的窗口中点击查看,向下滚到,找到隐藏已知文件类型的扩展名,点掉勾号,然后确定: 此时发现新建的文本文档出现后缀名为.txt 打开文本文档后,输入: msgbox"傻X",后保存. 修改文本文档的后缀,将.txt改为.vbs,后确定,双击打开.窗口弹出如图所示窗口,点确定或关闭后消失. 如果想添加一个

用shebang编写一个ssh自动登陆脚本

单例模式是软件开发中非常普遍的一种模式.它的主要作用是确保系统中,始终只存在一个类的实例对象. 这样做的好处有两点: 1.对于需要频繁使用的对象,在每次使用时,如果都需要重新创建,并且这些对象的内容都是一样的.则不但提高了jvm的性能开销(堆中开辟新地址,同时降低GC效率等),同时还会降低代码的运行效率.倘若始终在堆中只存在唯一的一个实例对象.任何方法在使用时,均直接访问这个实例对象,则大大提高了系统的运行效率. 如何判断滚动条是否滚动到页面底部?我们可以设置一个规则:当滚动条的滚动高度和整个文

用shell编写一个三角形图案

第一种方法 #!/bin/bash read -p "请输入层数: " n for (( i=1; i<=$n;i++ ))do   for (( j=n; j>=i;j-- ))do        echo -n " "donefor (( j=1;j<=i;j++ ))do    echo -n " *"  done  echodone 另外一种方案:三角形简单 #!/bin/bash for i in {1..9}dofo

转:Shell 编程--本文结合大量实例阐述如何编写一个shell脚本

转自:情報官世界 本文结合大量实例阐述如何编写一个shell脚本. 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性.可维护性和便携性比效率更重要的任务. 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bas

shell 编写脚本批量ping ip

最近做机房带宽检测.最近编写一个shell脚本批量ping各地机房的ip,返回失败率及平均响应时间 #!/bin/bash log=$1.log echo -n "" > $log for i in `cat $1` do   /bin/ping -s 1000 -f -c 100  $i > ip.txt echo "`curl ip.cn?ip=$i`  `cat ip.txt | grep transmitted  | gawk '{print $6}'`