博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
来一个可能防止恶意采集和爬虫的SH
阅读量:5950 次
发布时间:2019-06-19

本文共 1367 字,大约阅读时间需要 4 分钟。

没办法,公司的要求,还有,一些山寨爬虫完全不够我们运维人员的感觉,

一天爬虫搞个三四十万的LOG,那我只好干了。。

人家GOOGLE,BAIDU,一天大约也就五六千吧。。

有一个小的SSH技巧,是判断SSH命令执行成功与否,是否有返回值,不用IF,而直接用||和&&。

~~~~~~~~~~~~~~~~~~~~~

$?变量会被赋值为0,反之,赋值为-1。通过判断$?变量的方式确实可以满足我们的要求,但是需要用if判断,要写脚本,比较繁琐,有没有比较方便的命令呢。哈,肯定有的噻。

shell中还提供了快捷操作符: && 和 ||

// 此时存在/tmp/xxxx文件,执行了&&后面的命令# ls /tmp/xxxx && echo '/tmp/xxxx exits'/tmp/xxxx/tmp/xxxx exits// 此时存在/tmp/xxxx文件,不执行 || 后面的命令# ls /tmp/xxxx || echo '/tmp/xxxx exits'/tmp/xxxx

我们对上例可以这么分析,&& 签名的命令执行成功就执行后面的命令,|| 前面的命令执行失败才执行后面的命令。

~~~~~~~~~~

复制代码
#/bin/shtime_inter_minute=50000alert_count=85000000head_count=20log_path="/xxx/xxx/log.log"last_time=`date "-d -${time_inter_minute} minute" '+%d/%b/%G:%H:%M:%S'`now_time=`date '+%d/%b/%G:%H:%M:%S'`now_time_str="[${now_time}"last_time_str="[${last_time}"echo "start time: " $last_timeecho "end time: " $now_timeecho "alert_count: " $alert_countshell_out=`awk -v a=$last_time_str -v b=$now_time_str '$4 > a && $4 < b' $log_path|awk '{print $1}'|sort |uniq -c | sort -nr|head -10`arra=($shell_out)echo ${arra[@]}for i in "${!arra[@]}"; do    if [ `expr $i \% 2` -eq 0 ] ;then    if [ ${arra[$i]} -gt $alert_count ] && [ ${arra[$i+1]} != "xx.xx.xx.xx" ] ; then        /sbin/iptables -vnL|grep ${arra[$i+1]} && echo ${arra[$i+1]} "have added"        /sbin/iptables -vnL|grep ${arra[$i+1]} || /sbin/iptables -I INPUT -s ${arra[$i+1]} -j DROP    fi    fidone
复制代码

这个IP好过分哟

转载地址:http://rvpxx.baihongyu.com/

你可能感兴趣的文章
Java 对文件的操作
查看>>
smarty模板引擎(一)基础知识
查看>>
让网站和APP更具动感的几点建议
查看>>
contentprovider的学习实例总结
查看>>
Ubuntu下在Apache中运行Keystone
查看>>
快捷键
查看>>
Java初学(二)
查看>>
opencv2对于读书笔记——二值化——thresholded功能
查看>>
krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
查看>>
ZH奶酪:Python中zip函数的使用方法
查看>>
201507之佛山移动实习
查看>>
poj_1442 Treap
查看>>
renameTo()方法的用法
查看>>
Java25
查看>>
Delphi BLE 控件
查看>>
Bucket不为空,请检查该Bucket是否包含未删除的Object或者未成功的Multipart碎片
查看>>
Linux mysql
查看>>
产品配件删除,内容保存
查看>>
install 命令用法详解
查看>>
探索性测试学习分享
查看>>