一篇文章教你搞定脚本监控( 二 )

  • 重定向
  • 退出
  • 命令
    • 替换:变量=${变量}、变量=$(命令)、变量=表达式、变量=‘字符串’、变量=值
    • 查看:echo $X
    • 赋值:expr
    • 运算:let、&成功执行命令2、||#失败执行命令2

    一篇文章教你搞定脚本监控

    文章插图
     
    if [-n/-z $string] #如果string非空/空,返回True;
    if [xx1 -d/-a/-o xx2] #不存在、并列(文件1比文件2新)、或;
    [-e/-d/-f/-L/-r/-s/-h FILENAME] #如果FILENAME存在/为目录/为常规文件/符号链接/可读/长度不为0/软链接,则为真
    • 比较:-gt、-lt、-eq
    • 处理:#、%、/
    • 特殊变量(参数)

    一篇文章教你搞定脚本监控

    文章插图
     
    • 移动:shift #把变量从参数数组中移除
    范围
    seq a b
    seq -w b
    循环、条件
    • for

    一篇文章教你搞定脚本监控

    文章插图
     
    • if

    一篇文章教你搞定脚本监控

    文章插图
     
    • while

    一篇文章教你搞定脚本监控

    文章插图
     
    xpect
    例题:1. 测试一:监控磁盘的使用率,>90%时给root发邮件
    一篇文章教你搞定脚本监控

    文章插图
     
    2.测试二:写一个脚本解决DOS攻击生产案例
    提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟 。
    法一:
    # !/bin/bash
    IP=`netstat -nut | awk '{print $5}' | cut -d: -f1 | grep -o '.*[0-9]' | awk '{++ip[$1]}END{for(i in ip)print ip[$1],i}' | sort -n
    一篇文章教你搞定脚本监控

    文章插图
     
    IP=`netstat -nut | awk '{print $5}' | cut -d: -f1 | grep -o '.*[0-9]' | awk '{++ip[$1]}END{for(i i n ip)print ip[$1],i}' | sort -n | awk '{if($1>1)p rint $2}'`
    一篇文章教你搞定脚本监控

    文章插图
     
    3. 测试三:查看10.0.0.0/24网段中的在线用户数;
    ping:测试主机间网络的连通性
    一篇文章教你搞定脚本监控

    文章插图
     
    22. env CLOUD_MySQL_ENV=test exec /opt/cloud_mysql/bin/uwsgi --die-on-term --ini /opt/cloud_mysql/conf/uwsgi.in
    一篇文章教你搞定脚本监控

    文章插图
     
    nmap:一款开源的网络探测器和安全审核工具,它可以快速扫描大型网络
    一篇文章教你搞定脚本监控

    文章插图
     
    4. 批量创建文件及改名(不同的系统语法有所不同,此为另一种思路)
    一篇文章教你搞定脚本监控

    文章插图
     
    15.passwd=`echo $(date+%t%N)$RANDOM|md5sum|cut -c 2-9` #$RANDOM表示内部变量,可以创建随机数;date+X%设置系统时间格式
    16. useradd oldboy$n >&/dev/null&& user_status=$?
    17. echo "$passwd"|passwd --stdinoldboy$n >&/dev/null && pass_status=$? #用echo xxx | yyy --stdin zzz,其中xxx为和终端交互内容
    一篇文章教你搞定脚本监控

    文章插图
     
    python
    一篇文章教你搞定脚本监控

    文章插图
     
    #当前时间
    time.strtime(’%y-%m-%d’)
    #磁盘状态
    os.open('df -h ',‘r’).readline()
    #表示形态
    ‘n’.join(xxx)
    #写入数据
    f.write(’%s’ % str)、f.flush() 、f.close()
    四,监控源代码分析
    1,PS命令查看linux程序进程
    一篇文章教你搞定脚本监控

    文章插图
     
    2,shell脚本
    利用PS命令查看server进程的状态,如死亡、就重新启动 。做一个死循环轮训 。
    一篇文章教你搞定脚本监控

    文章插图
     
    30秒去轮询这个这个进程 。死亡就继续重启 。
    3,效果
    一篇文章教你搞定脚本监控

    文章插图
     
    PS查看进程号,此时procnum = 3 然后用kill 命令杀死进程之后
    一篇文章教你搞定脚本监控


    推荐阅读