zoukankan      html  css  js  c++  java
  • Shell编程(二)

    案例子任务一、编写系统监控脚本sysmon.sh

    要求:在/root/bin目录下编写脚本,监控系统中内存、cpu、磁盘的占用率;赋予脚本文件执行权限,执行脚本检查效果;设置计划任务每分钟执行一次脚本。

    话不多说,直接上代码。。。

    #/bin/bash
    # memory used rate
    Memory(){    #定义函数
            LoadMemory=$(cat /proc/meminfo | awk '{print $2}')    #获取整个参数
            Total=$(echo $LoadMemory | awk '{print $1}')    #获取总资源
            Free1=$(echo $LoadMemory | awk '{print $2}')    #获取空闲资源
            Free2=$(echo $LoadMemory | awk '{print $3}')
            Free3=$(echo $LoadMemory | awk '{print $4}')
            Used=`expr $Total - $Free1 - $Free2 - $Free3`    #获取已占用的资源
            Used_Rate=`expr  $Used/$Total*100 | bc -l`    #计算比率
            Memory_Used_Rate=`expr  $Used_Rate/1 | bc`    
    }
    Memory    #执行函数
    if [ $Memory_Used_Rate -gt 30 ]        #判断
            echo "内存报警:"$Memory_Used_Rate%
            echo "内存使用率:$Memory_Used_Rate%" | mail -s "内存告警" root    #发送邮件
    if
    --------------------------------------------------------------------------------------------------------------------------------------------------
    #/bin/bash
    # disk used rate
    Disk(){    #定义函数
            Location=/dev/sda    #定义磁盘位置
            Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')    #获取已使用的比例
            Disk_Used=$(echo $Disk_Used_Rate | awk '{print int($0)}')    #获取已经使用的数字方便if判断
    }
    Disk    #执行函数
    if [ $Disk_Used -gt 10 ]    #判断
            echo "磁盘报警:"$Disk_Used%
            echo "磁盘使用率:$Disk_Used%" | mail -s "内存告警" root    #发送邮件
    if
    --------------------------------------------------------------------------------------------------------------------------------------------------
    #/bin/bash
    # cpu used rate
    Cpu(){    #定义函数
            Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')    #信息分隔获取参数
            Free=$(echo $Log | awk '{print $4}')    #获取空闲资源
            Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')    #获取整个资源
            Cpu_Used=`expr $Total - $Free`    #计算已经使用资源
            Cpu_Used_Rate=`expr  $Cpu_Used/$Total*100 | bc -l`    #判定比例
    }
    Cpu    #执行函数
    if [ $(echo $Cpu_Used_Rate| awk '{print int($0)}') -gt 10 ]    #判断
            echo "CPU报警:"$Cpu_Used_Rate%
            echo "cpu使用率:$Cpu_Used_Rate%" | mail -s "内存告警" root    #发送邮件
    if

    需要每个一分钟执行一次,需要安装定时执行的工具软件。

    1.安装crontab

      命令:yum install cixie-cron  

              yum install crontabs

    2.开启crontab服务

    service crond start //启动服务 
               service crond stop //关闭服务 
               service crond restart //重启服务 

    查看crontab服务状态:service crond status 

    3.设置脚本

    命令行输入:crontab -e 进入后编写想要执行的脚本

    执行情况!发现会发送邮件,呈现执行结果。

     

    案例子任务二、编写FTP探测脚本scanhost.sh

     要求:在/root目录下编写脚本,扫描给定IP网段中的ftp服务器;赋予脚本执行权限,扫描某个网段

    直接上干货!

    #!/bin/sh
    #执行命令时候,只需要追加输入特定的IP地址即可
    IP1=`echo $1 |awk -F"." '{print $1}'`    #获取IP前三位
    IP2=`echo $1 |awk -F"." '{print $2}'`    #获取IP下一个三位
    IP3=`echo $1 |awk -F"." '{print $3}'`    #获取IP再下一个三位
    IP4=$(echo $1 |awk -F"." '{print $4}')    #获取IP最后三位
    
    for ((i=1; i<=254; i++))
    do
            echo $i    #显示扫描的个数
            wget  ftp://$IP1.$IP2.$IP3.$i &>null    #命令测试是否能连接,在后台显示测试过程
            if [ $? -eq 0 ]    #如果能连接,就执行
                    then echo "$IP1.$IP2.$IP3.$i is open"    #执行成功显示开放的IP地址
            fi
    done

    直接赋予执行权限,执行后,会逐步检测整个网段的地址,检测ftp开放情况,会自动显示测试网段的开放地址。

    由于测试的响应事件比较慢,大家可以根据自己的情况,设置适当缩短响应时间,首先测试的网段需要有一个可访问的ftp服务器哟~

     此致完成~

  • 相关阅读:
    mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句
    架构设计文档提纲简描
    各大互联网公司架构演进之路汇总
    大数据安全规范
    生活启示
    mysql数据库分库分表(Sharding)
    大数据风控指标----查准率与查全率
    YARN和MapReduce的内存设置参考
    不要在linux上启用net.ipv4.tcp_tw_recycle参数
    [Spark经验一]Spark RDD计算使用的函数里尽量不要使用全局变量
  • 原文地址:https://www.cnblogs.com/jake-jin/p/12488742.html
Copyright © 2011-2022 走看看