cszer

分类存档: shell

banip

IN:工作相关, 技术, shell   Tags:    评论: 3   阅读:1,620 views

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
#2014/01/02 caishzh
 
TODAY=$(date +%Y%m%d)
LOG=/home/caishzh/banip.log
ACCESSLOG=/opt/apache/logs/access-${TODAY}.log
TMPLOG=/tmp/banip_tmp.log
NOW=$(date +%Y%m%d%H%M)
TMPTIME=$(date -d "-5 minute" +%Y%m%d%H%M)
LIMIT=30
 
sed -n "/${TMPTIME}/,/${NOW}/p" $ACCESSLOG >$TMPLOG
 
grep zone_protocol.aspx?zone_id $TMPLOG |cut -d" " -f3|sort|uniq -c|awk -v limit="$LIMIT" '$1>limit{print $1,$2}' | while read times ip;
do
     if ! iptables-save|grep $ip >/dev/null && ! grep "${ip}$" /home/caishzh/whitelist >/dev/null;then
          iptables -I INPUT -s "$ip" -p tcp -m tcp --dport 80 -j DROP    
          echo "$(date +'%F %T')  $times  $ip" >>$LOG
     fi
done
04-10
2014

linux多线程网页截图-shell

IN:工作相关, shell   Tags: ,    评论: 1   阅读:5,150 views

老大临时安排任务,要定期对大量(万为单位)的网站截图并归档保存。最早使用的是window下的一个解决方案:webshotcmd.exe+批处理。运行了一段时间,发现经常弹出webshotcmd.exe程序未响应的窗口,需要人工点击确定后才能继续截图,而且webshocmd未注册版本截出的图是灰色的,不方便查看。
google了下,发现了linux的两个截图工具cutycapt和phantomjs,经过测试,cutycapt截图较慢,但比较稳定,phantomjs截图速度较快,但时有出现进程假死的状态。权衡利弊,决定使用cutycapt+shell脚本的方式截图:
继续阅读 »

06-08
2013

开发自己的监控系统二、web篇

IN:工作相关, Linux 运维, shell   Tags: ,    评论: 8   阅读:6,861 views

开发自己的监控系统一、email篇
开发自己的监控系统三、移动篇(android)

web篇:

关键字:shell mysql python web.py

在上一篇中,我们介绍了如何使用shell脚本监控系统状态,并在出现异常时通过email发送警报。但email报警有一个弊端,无法实时了解服务器的运行状态。为了满足这一需求,就要开发一个web程序,通过网页的方式来显示所有服务器的实时运行状态。

原理:

定时执行监控脚本提取服务器运行相关信息,如系统负载、磁盘空间等,将这些信息入到mysql数据库中。开发一个web程序,当用户通过浏览器访问web监控页面,web程序读取mysql数据库中服务器的数据,以网页的形式展现给用户。
继续阅读 »

05-21
2013

开发自己的监控系统一、email篇

IN:工作相关, Linux 运维, shell       评论: 6   阅读:4,085 views

前言:

随着维护服务器量的增多,越来越觉得监控的重要性。监控,就是运维人员的眼睛,没有了监控,你不知道磁盘是否满了,网络流量是否超标,甚至服务器是否宕机。监控的重要性不言而喻。市面上的监控软件也很多,如商业版的ipmontor、opmanager,免费开源的nagios、cacti等。每个监控软件都有各自优缺点和应用场景,这里不去探讨。本文要探讨的是从一个初学者的角度去打造属于自己的监控系统。共分为三部分:email篇web篇移动篇(android)。好了,不废话了,下面开始。

email篇:

关键字:shell、email

原理:
定时执行监控脚本,提取服务器运行状态,如系统负载、磁盘空间或是相关服务是否运行等,只要有一项异常,即马上发送邮件警报。下面是脚本内容(由于只是个事例,所以只设定了两个监控项目,大家根据自己的需求增减监控项目)。
继续阅读 »

05-19
2013

awk数组操作详解

IN:技术, shell   Tags:    评论: 0   阅读:2,928 views

用awk进行文本处理,少不了就是它的数组处理。那么awk数组有那些特点,一般常见运算又会怎么样呢。我们先看下下面的一些介绍,结合例子我们会讲解下它的不同之处。在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。
继续阅读 »

10-30
2012

脚本实现实时显示linux网络流量

IN:技术, shell       评论: 1   阅读:1,835 views

vim flow.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
#caishzh 20121030
#displays the current Traffic
 
ETH=$1
ETH=${ETH:-eth0}
IP=`ifconfig $ETH|awk -F '[ :]+' '/inet addr/{print $4}'`
 
while true;do
        let I+=1
        NOW=`date +"%F %T"`
        TX1=`grep $ETH /proc/net/dev | tr : " " | awk '{print $10}'`
        RX1=`grep $ETH /proc/net/dev | tr : " " | awk '{print $2}'`
        sleep 1
        TX2=`grep $ETH /proc/net/dev | tr : " " | awk '{print $10}'`
        RX2=`grep $ETH /proc/net/dev | tr : " " | awk '{print $2}'`
 
        let TX=(TX2-TX1)/1024
        let RX=(RX2-RX1)/1024
        let TX_TOTAL+=$TX
        let RX_TOTAL+=$RX
        let TX_AVERAGE=TX_TOTAL/${I}
        let RX_AVERAGE=RX_TOTAL/${I}
 
        clear
 
        printf "%10s\t%20s\n" "Device $ETH [$IP]" "$NOW"
        echo "============================================================="
        printf "%10s\t%20s\t%20s\n" CURRENT: in:${RX}KB/s out:${TX}KB/s
        printf "%10s\t%20s\t%20s\n" AVERAGE: in:${RX_AVERAGE}KB/s out:${TX_AVERAGE}KB/s
        printf "%10s\t%20s\t%20s\n" TOTAL: in:${RX_TOTAL}KB out:${TX_TOTAL}KB
done

脚本默认显示eth0的流量,如果要显示其它网卡的流量,请在脚本后接网卡名,如:
./flow.sh eth1

运行结果:
flow.sh

另一个版本,就是改了下显示的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
#caishzh 20130311 version 2
#displays the current Traffic
 
LANG=C
ETH=$1
ETH=${ETH:-eth0}
IP=`ifconfig $ETH|awk -F '[ :]+' '/inet addr/{print $4}'`
 
while true;do
        let I+=1
        NOW=`date +"%F %T"`
        TX1=`grep $ETH /proc/net/dev | tr : " " | awk '{print $10}'`
        RX1=`grep $ETH /proc/net/dev | tr : " " | awk '{print $2}'`
        sleep 1
        TX2=`grep $ETH /proc/net/dev | tr : " " | awk '{print $10}'`
        RX2=`grep $ETH /proc/net/dev | tr : " " | awk '{print $2}'`
 
        let TX=(TX2-TX1)/1024
        let RX=(RX2-RX1)/1024
        let TX_TOTAL+=$TX
        let RX_TOTAL+=$RX
        let TX_AVERAGE=TX_TOTAL/${I}
        let RX_AVERAGE=RX_TOTAL/${I}
 
        printf "%s \t %30s \t %30s \t %30s\n" "$NOW" "CURRENT: in:${RX}KB/s out:${TX}KB/s" "AVERAGE: in:${RX_AVERAGE}KB/s out:${TX_AVERAGE}KB/s" "TOTAL: in:${RX_TOTAL}KB out:${TX_TOTAL}KB"

注:printf那一句是一行,语句太长,自动换行了。

10-30
2012

『总结』shell算数运算方法

IN:技术, shell       评论: 2   阅读:2,021 views

1.expr 表达式
expr只能用于一元操作符,不支持二元操作符

1
2
x=1
x=$(expr $x + 1)

$x + 1之间必须有空格

2.let 表达式

1
2
3
4
x=10
let x=$x+1
let x+=1
let x*=10

3.使用$((表达式))

1
x=$((4+5))

4.使用$[ ]形式

1
x=$[ 4 + 5 ]

5.使用decalare

1
2
3
decare -i num
num=$num+1
echo $num
08-20
2012

工作中常用的shell命令

IN:工作相关, Linux 运维, shell   Tags:    评论: 1   阅读:2,585 views

列出所有 ESTABLISHED 状态的连接:

1
netstat -nta | fgrep "ESTABLISHED" | cut -b 49-75 | cut -d ':' -f1 | sort | uniq -c | sort -n -r --key=1,7 | head -25

列出所有连接状态的统计:

1
netstat -nta | fgrep ":" | cut -b 77-90 | sort | uniq -c

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

继续阅读 »

06-25
2012

Linux监控利器nagios–NSCA被动监控

IN:Linux 运维, shell   Tags: ,    评论: 18   阅读:13,947 views

前言:

nagios的安装请参照:Linux监控利器nagios–安装

PS:关于nagios的被动监控(nsca)好几个月前就想整理了,整了这么久才整完,看来自己又懒散了。需要寻找一些动力了。。。

nagios的主动监控,可以参考下以下博文,博主讲得很详细:nagios全攻略

以下介绍nagios的被动监控NSCA:

随着服务器的不断增加,nagios监控机已经有点不堪负重,故尝试使用被动模式以承担更大的监测量,同时也提高了监测的灵敏性和监测的方便性。 继续阅读 »

05-27
2012
第 1 页,共 2 页12