获取服务器状态并发送到twitter

前两天,空间提供商kilu的服务器似乎有些问题,总是出现下线或者拒绝服务器的状态,于是想写一个脚本来自动获得服务器状态并公布到twitter上。在kilu的论坛上发现了一个帖子,并告诉了服务器状态的网址: http://subdomain.kilu.info/,但该地址获得的是所有服务器的状态,于是开了firebug,看了一下,原来后台向 http://m2000.onpw.de/kilu/server_check.php 发送的请求,格式如下:

http://m2000.onpw.de/kilu/server_check.php?srv=Server_Id&port=Port&tm=Num

Server_Id为你空间所在的服务器的id,kilu的服务器都是www1,www2,www3什么的,在后台管理可以看的到的(比如我的是12),port为要检查的端口号,tm这个可以不要的(应该是tm,昨天看的,没什么必要,所以就没记住)

于是写了个脚本来获得服务器信息:

       #!/bin/sh
Time=`curl "http://m2000.onpw.de/kilu/server_check.php?srv=12&port=80" | sed -e 's/< [^<]*>//g'`
Result=`echo $Time | grep "sec"`
WEB_ERROR=""
if [ -z "$Result" ] ; then
    WEB_ERROR="web failed:$Time"
    twitter.sh "通知:http://zeze0556.tk 可能下线,原因:$Time,造成该原因可能由于网络故障或维护,我们将在半个小时检测一次,并及时通知检测结果,本通知由脚本自动发送"
    echo "$WEB_ERROR" > web_error
else
    if [ -e web_error ] ; then
        rm -drf web_error
        twitter.sh "通知:http://zeze0556.tk 服务器恢复正常,本通知由脚本自动发送"
    else
        echo "success=$Time"
    fi
fi

Time=`curl "http://m2000.onpw.de/kilu/server_check.php?srv=12&port=3306" | sed -e 's/< [^<]*>//g'`
Result=`echo $Time | grep "sec"`
SQL_ERROR=""
if [ -z "$Result" ] ; then
    SQL_ERROR="SQL failed:$Time"
    twitter.sh "通知:http://zeze0556.tk 数据库异常变动,原因:$Time,造成该原因可能由于网络故障或维护,我们将在半个小时检测一次,并及时通知检测结果,本消息由脚本自动发送"
    echo "$SQL_ERROR" > sql_error
else
    if [ -e sql_error ] ; then
        rm -drf sql_error
        twitter.sh "通知:http://zeze0556.tk 数据库恢复正常,本通知由脚本自动发送"
    else
        echo "success=$Time"
    fi
fi
       

上述内容中,3306是sql数据库的端口号,之所以检查是因为wordpress需要从数据库中读取内容。

上述内容中,还有一个twitter.sh的脚本,这个脚本是用来将消息发送到twitter上的,网上很多教程关于从linux命令行发送twitter的,由于twitter现在不支持basic 认证了,不过所幸的是,通过GTAP还是可以进行basic认证的,而且更加的安全。于是就有了下面的内容:

继续阅读获取服务器状态并发送到twitter