【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

原文地址:https://www.cnblogs.com/17bdw/p/10441183.html