zoukankan      html  css  js  c++  java
  • 【Shell】30分钟关闭Tcpdump,开启Tcpdump、检测目录大小终止任务

    场景

    按照一定时间规律运行Tcpdump

    思路

    编程思路细化思考

    查看文件个数

        file_count_results=`ls -al "C:\Users\Windows32\Desktop\test" | grep ^- | wc -l`
    

    显示文件大小

    $ du -h --max-depth=0
    2.1G    .
    
    $ du -bs
    2177623726 .
    

    这样的话,在SHELL里把文件夹大小做为命令输出赋值到一个变量里,但是用awk命令取第一列

    CHECK=$(du -bs /data/sflow_log | awk '{print $1}')
    

    关系运算符

    运算符	说明	举例
    -eq	检测两个数是否相等,相等返回 true。	[ $a -eq $b ] 返回 false。
    -ne	检测两个数是否不相等,不相等返回 true。	[ $a -ne $b ] 返回 true。
    -gt	检测左边的数是否大于右边的,如果是,则返回 true。	[ $a -gt $b ] 返回 false。
    -lt	检测左边的数是否小于右边的,如果是,则返回 true。	[ $a -lt $b ] 返回 true。
    -ge	检测左边的数是否大于等于右边的,如果是,则返回 true。	[ $a -ge $b ] 返回 false。
    -le	检测左边的数是否小于等于右边的,如果是,则返回 true。	[ $a -le $b ] 返回 true。
    

    判断文件大小,超过大小终止程序

    # 2GB
    SIZE="2177622069"
    
    # check the current size
    CHECK=$(du -bs | awk '{print $1}')
    
    if [ "$CHECK" -gt "$SIZE" ]; then
           # kill Tcpdump
           kill_tcpdump=$(ps aux | grep tcpdump | awk '{print $2}' | xargs sudo kill -9)
    fi
    

    sudo运行bash

    $ cat test.sh
    #!/bin/foo
    echo bar
    
    $ ./test.sh
    bash: ./test.sh: /bin/foo: bad interpreter: No such file or directory
    
    $ bash test.sh
    bar
    
    $ sudo ./test.sh
    sudo: unable to execute ./test.sh: No such file or directory
    
    $ sudo bash ./test.sh
    bar
    

    Windows与Linux文件转换

    cat test.sh | col -b > test1.sh
    

    计划任务部分

    计划任务实现30分钟运行一次shell脚本,关闭和开启TCPdump

    #------------crontab
    */30 * * * * /test.sh
    

    shell脚本内容:

    
    # kill Tcpdump
    
    kill_tcpdump=$(ps aux | grep tcpdump | awk '{print $2}' | xargs sudo kill -9)
    
    # run tcpdump ,`date `是时间戳
    
    tcpdump -i eth0 -w `date +%s`.pcap
    
    

    检测文件目录大小

    目的是为了检测文件目录的文件是不是超出了预估范围。如果已经超出了预期就停止tcpdump进程

    #------------sec shell
    # init file_count_results
    file_count_results=0
    
    # 1GB
    SIZE="1088811863"
    while(( $file_count_results<=5 ))
    do
        # check the current size
        CHECK=$(du -bs | awk '{print $1}')
        # if file size > 1GB
        if [ "$CHECK" -ge "$SIZE" ]; then
    	   # kill Tcpdump,也可以选择删除计划任务
           kill_tcpdump=$(ps aux | grep tcpdump | awk '{print $2}' | xargs sudo kill -9)
    	   #break
        fi	
    	# watch file size
        file_count_results=`ls -al | grep ^- | wc -l`
    	echo "current file count: $file_count_results"
    done
    

    参考

    Linux下的换行符 以及txt和word文档的使用
    一个Linux平台的门罗币挖矿木马的查杀与分析
    sudo: unable to execute ./script.sh: no such file or directory

  • 相关阅读:
    微服务架构 ------ DockerCompose从安装到项目部署
    微服务架构 ------ Dockerfile定制镜像
    微服务架构 ------ Ubuntu下Docker的安装
    微服务架构 ------ 插曲 linux LVM磁盘扩容
    Ubuntu java环境变量配置
    微服务架构 ------ 插曲 hikari连接池的配置
    微服务架构 ------ 插曲 Mybatis逆向工程
    微服务架构 ------ 插曲 Linux平台 Ubuntu的安装
    微服务架构 ------ Day01 微服务架构优缺点
    k8s配置storage-class
  • 原文地址:https://www.cnblogs.com/17bdw/p/10441183.html
Copyright © 2011-2022 走看看