【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下的换行符\n\r以及txt和word文档的使用
一个Linux平台的门罗币挖矿木马的查杀与分析
sudo: unable to execute ./script.sh: no such file or directory