这是一个大型的监控脚本,方便于查看硬盘,网络,负载,内核版本等系统信息。

本脚本来自于github的atarallo,我对脚本做出了改编和一些注释,尽量让新手也能理解,这个脚本逻辑清楚简单,适合用于练习。

脚本运行效果

脚本代码

  1 #!/bin/bash
  2 # Author: fissure
  3 # Blog: https://home.cnblogs.com/Y139147/
  4 # Time: 2019-09-06 09:50:54
  5 # Name: system_monitor.sh
  6 # Version: v1.0
  7 # Description: This is a Script.
  8 # Linux大型shell脚本实现系统监控
  9 while getopts ivh name
 10 # 获取用户传递的参数,如 monitor -i -h之类
 11 do
 12     case $name in
 13         i)ioption=1;;
 14         #安装
 15         v)voption=1;;
 16         #查看版本信息
 17         h)hoption=1;;
 18         #查看帮助
 19         *)echo "请输入正确的参数";;
 20     esac
 21 done
 22 #
 23 #安装选项
 24 if [[ ! -z $ioption  ]];then
 25     {
 26     wd=$(pwd)
 27     basename "$(test -L "$0"&& readlink "$0"||echo "$0")" > /tmp/scriptname
 28     #判断是否存在并为一个连接文件,如果存在,通过readlink来找到他的路径
 29     #如果不存在一个连接文件,就输出文件路径
 30     #使用basename取出文件名
 31     #$0表示shell本身路径
 32     scriptname=$(echo -e -n $wd/ && cat /tmp/scriptname)
 33     su -c "cp $scriptname /usr/bin/monitor" root && echo "脚本安装成功,现在可以运行指令"||echo"安装失败"
 34     #su -c 表示在执行复制时变更账号为root,执行完毕变回原来的用户
 35     }
 36 fi
 37 #
 38 #查看版本信息
 39 if [[ ! -z $voption ]];then
 40     {
 41     echo -e "系统监控器v1.0版本\n感谢宁的使用熬(*^_^*)"
 42     }
 43 fi
 44 #
 45 #帮助选项
 46 if [[ ! -z $hoption ]];then
 47     {
 48     echo -e " -i        安装脚本"
 49     echo -e " -v        查看版本"
 50     echo -e " -h        查看帮助"
 51     }
 52 fi
 53
 54 if [[ $# -eq 0 ]];then
 55     {
 56     #清屏
 57     clear
 58     #使用unset释放以定义过的变量
 59     unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
 60     #恢复为初始颜色
 61     tecreset=$(tput sgr0)
 62     #检查网络连通性
 63     ping -c 1 www.baidu.com &> /dev/null && echo -e '\E[32m'"网络"$tecreset "连通"||echo -e '\E[32m'"网络"$tecreset "不通"
 64     #查看系统类型
 65     os=$(uname -o)
 66     #查看操作系统的版本和名称
 67     OS=`uname -s`
 68     REV=`uname -r`
 69     MACH=`uname -m`
 70
 71     GetVersionFromFile()
 72     {
 73     VERSION=`cat $1 | tr "\n" ' '|sed s/.*VERSION.*=\ //`
 74     }
 75     #Sun公司操作系统
 76     if [ "${OS}" = "SunOS" ];then
 77         OS=Solaris
 78         #显示处理器类型
 79         ARCH=`uname -p`
 80         OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
 81     #IBM开发的AIX系统
 82     elif [ "${OS}" = "AIX" ];then
 83         OSSTR="${OS} `oslevel`(`oslevel -r`)"
 84     #Linux
 85     elif [ "${OS}" = "Linux" ];then
 86         KERNEL=`uname -r`
 87         if [ -f /etc/redhat-release ];then
 88             DIST='RedHat'
 89             PSUEDONAME=`cat /etc/redhat-release |sed s/.*\(//|sed s/\)//`
 90             REV=`cat /etc/redhat-release |sed s/.*release\ // |sed s/\ .*//`
 91         elif [ -f /etc/SUSE-release];then
 92             DIST=`cat /etc/SuSE-release|tr "\n" ' '|sed s/VERSION.*//`
 93             REV=`cat /etc/SuSE-release|tr "\n" ' '| sed s/.*=\ //`
 94         elif [ -f /etc/mandrake-release ];then
 95             DIST='Mandrake'
 96             PSUEDNAME=`cat /etc/mandrake-release | sed s/.*\(//| sed s/\)//`
 97             REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
 98         elif [ -f /etc/debian_version ];then
 99             DIST="Debian `car /etc/debian_version`"
100             REV=""
101
102         fi
103         if ${OSSTR}[ -f /etc/UnitedLinux-release ];then
104             DIST="${DIST}[`cat /etc/UnitedLinux-release|tr "\n" ' '|sed s/VERSION.*//`]"
105         fi
106     OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
107     fi
108     }
109     #查看操作系统
110     echo -e '\E[32m'"操作系统版本:"$tecreset $OSSTR
111     #查看系统的类型
112     architecture=$(uname -m)
113     echo -e '\E[32m'"系统类型:" $tecreset $architecture
114     #查看内核版本
115     kernelrelease=$(uname -r)
116     echo -e '\E[32m'"内核版本:" $tecreset $kernelrelease
117     #查看主机名
118     echo -e '\E[32m'"主机名:" $tecreset $HOSTNAME
119     #查看内网ip
120     internalip=$(hostname -I)
121     echo -e '\E[32m'"内网IP :" $tecreset $internalip
122     #查看DNS
123     nameservers=$(cat /etc/resolv.conf | sed '1 d'|awk '{print $2}')
124     echo -e '\E[32m'"DNS:" $tecreset $nameservers
125     #使用who命令查看当前登陆用户
126     who>/tmp/who
127     echo -e '\E[32m'"登陆用户" $tecreset && cat /tmp/who
128     #查看内存使用情况
129     free -h >/tmp/ramcache
130     echo -e '\E[32m'"内存使用情况" $tecreset && cat /tmp/ramcache |grep -v "Swap"
131     #反选Mem
132     echo -e '\E[32m'"交换分区使用情况" $tecreset &&cat /tmp/ramcache |grep -v "Mem"
133     #查看磁盘使用
134     df -h |grep 'Filesystem\|/dev/sda*'> /tmp/diskusage
135     echo -e '\E[32m'"磁盘情况" $tecreset && cat /tmp/diskusage
136     #查看负载,top -n指定迭代次数为一次,-b表示在批处理模式启动,从顶端一直输出到末端,方便输出到其他程序和文件
137     loadaverage=$(top -n 1 -b|grep "load average:"|awk {'print $10 $11 $12'}|sed s/,//|sed s/.*://)
138     #换算成百分数
139     loadaa=$(awk 'BEGIN{print '$loadaverage*100'}')
140     echo -e '\E[32m'"平均负载" $tecreset $loadaa"%"
141     #查看系统运行时间
142     tecuptime=$(uptime |awk '{print $3 $4}'|cut -d"," -f 1)
143     echo -e '\E[32m'"系统运行时间:"$tecreset $tecuptime
144     #释放变量
145     unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
146     #删除临时文件
147     rm /tmp/who /tmp/ramcache /tmp/diskusage
148 fi

脚本运行方式

1、为脚本添加权限

2、./脚本名 [-i/-h/-v] -i    安装脚本

3、输入monitor运行程序

出处,作者的github https://github.com/atarallo/TECMINT_MONITOR

本脚本仅用于学习交流

转载于:https://www.cnblogs.com/Y139147/p/11479743.html

linux100day(day8)--shell监控脚本练习相关推荐

  1. shell监控脚本-监控mysql 主从复制

    注意:请先参考 shell监控脚本-准备工作,监控脚本在 rhel5 下测试正常,其它版本的linux 系统请自行测试 #监控mysql 主从复制 cat chk_mysql_rep.sh #!/bi ...

  2. linux 脚本发邮件短信,shell 监控脚本 短信告警

    监控+实时报警 自己使用bash shell 编写了一个监控脚本.通过139邮箱,发送邮件,短信及时通知. 功能描述:通过config.list文件获取各个服务器地址.相应端口.名称,循环检测各个应用 ...

  3. shell迷你版监控脚本

    写了一个shell版mini监控脚本,纯属跟大家分享学习下,有兴趣学习shell的可以看下.(*_*) 总共3个脚本文件service.sh, daemon.sh ,tcp.sh 实现了一些基本功能: ...

  4. 整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新!

    整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新! 一.ffmpeg脚本 1.1 打开进程,并判断进程数量 1.2 关闭进 ...

  5. [shell实战脚本]脚本监控一些ip是否某个端口开放,测试是否能连通

    作者简介:电子科技大学毕业,位列国家"双一流"."985工程"."211工程",参加上市公司达内时代科技集团有限公司Linux云计算培训,参 ...

  6. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1, #cat /proc/stat/  信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s   或者 #vmstat    虚拟内存统 ...

  7. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  8. 如何添加sersync进程监控脚本

    sersync监控脚本不但能对相关进程进行监控,还能够自动将停止的进程自动重启.下面就直接讲解一下sersync监控ing脚本的具体操作方法. 环境介绍 sersync安装在/root/shell/下 ...

  9. shell sqlplus执行sql文_如何通过 Shell 监控异常等待事件和活跃会话

    作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,分开这么久很高兴又和 ...

最新文章

  1. Access自动编号 违反并发性原因解析
  2. ubuntu下载搜狗输入法并设置开机自启动
  3. Linux的pcel问题-bash: pecl: command not found
  4. SAP UI5 初学者教程之二十一 - SAP UI5 的自定义格式器(Custom Formatter) 试读版
  5. 根据另外一个表来更新,增加字段
  6. 《数学之美》—PageRank
  7. html加密文件夹,怎么给文件夹加密
  8. 信度效度难度区分度是什么意思_【辨析·干货】“效度、信度、难度和区分度”一起学...
  9. Ubuntu安装VNC,配置多用户vnc连接Ubuntu,开机自启vnc命令
  10. PHP 数据类型划分(8种)、获取数据(变量)的类型函数、单引号和双引号的字符串区分转义符、定界符、拓展
  11. 几万创业做什么好_适合小投资者轻资产的创业项目_加油优惠卡
  12. OEC管理法(转载)
  13. CSS3+JS卡通人物开车动画
  14. 桌面微型计算机,一、微机室(云桌面).PDF
  15. 2.4G有源智能电子学生卡
  16. 图像处理一些大牛团队的网站
  17. 12.写一个简单的发布器与订阅器(C++)
  18. 扫描仪(Scanner)用法
  19. ubuntu20.04必备的一些软件安装目录
  20. 【Debug经验】低电压电流模Bandgap电路DC温度曲线异常

热门文章

  1. 关于SAP UI5 CRM Reuse Fiori应用的代码审查
  2. fiddler抓包工具简介
  3. 阿德莱德大学计算机科学学士收费,2017阿德莱德大学研究生学费
  4. 相机成像原理_数码相机的工作原理
  5. python3.x版本的保留字总数是多少_Python3.6.5版本的保留字总数是:()-智慧树大数据分析的python基础章节答案...
  6. java maven mainclass_使用Maven运行Java main的3种方式
  7. 企业邮箱服务器删除邮件,企业邮箱Webmail对邮件进行删除或者清空邮件的方法...
  8. 属于HTML文档头部相关标记,下列选项中,属于HTML文档头部相关标记的是 答案:title/titlemeta /...
  9. 被替换的项目不是替换值长度的倍数_如果要在Excel中计算单元格内指定的字符长度,我推荐这两个公式.........
  10. 国一B题方案解析:轴距仅210mm的四旋翼有多稳?