#!/bin/bash
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
PASSWD='**************'
print_help() {
echo "Usage:"
    echo "  -H)"
    echo "    主机地址"
echo "[-w] Warning"
echo "[-c] Critical"
exit  $STATE_OK
}
while test -n "$1"; do
case "$1" in
--help|-h)
print_help
exit  $STATE_OK
;;
 --url|-H)
    HOSTADDRESS=$2
    shift
    ;;
-w)
warn_level=$2
shift
;;
-c)
critical_level=$2
shift
;;
*)
echo "Unknown Argument: $1"
print_help
exit  $STATE_UNKNOWN
;;
esac
shift
done
if [ "$warn_level" == "" ]; then
echo "No Warning Level Specified"
print_help
exit  $STATE_UNKNOWN;
fi
if [ "$critical_level" == "" ]; then
echo "No Critical Level Specified"
print_help
exit  $STATE_UNKNOWN;
fi
if [ "$HOSTADDRESS" == "" ]; then
echo "No HOSTADDRESS Specified"
print_help
exit  $STATE_UNKNOWN;
fi
echo "" > /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS

#/usr/local/nagios/libexec/check_host_time_expect.sh $HOSTADDRESS &> /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS
/usr/local/bin/expect <<EOF
log_file /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS
log_user 1
spawn  ssh -t -p 22 supope@$HOSTADDRESS "date +%s"
expect {
        "(yes/no)?"
                    {

send "yes\r"
                        expect  "*assword" { send "$PASSWD\r"}
                   
                    }
        "*assword"  {
                       
                        send "$PASSWD\r"
                    }

}
expect "100%"
EOF
###处理数据格式
sed -i 's/\r//g' /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS

###处理时间

host_time=`cat /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS|grep -E '^[0-9]'`

cur_time=`date +%s`

value=`expr $cur_time - $host_time`

if [ $value -lt 0 ]; then
  let value=0-$value;
fi

if [[ "$value" -le "$warn_level" ]]; then
echo "$HOSTADDRESS time is OK. $HOSTADDRESS_time-cur_time:$value|value=$value;$warn_level;$critical_level;0"
exit  $STATE_OK;
elif [[ "$value" -gt "$warn_level" ]] && [[ "$value" -lt "$critical_level" ]]; then
echo "$HOSTADDRESS time is WARNING. $HOSTADDRESS_time-cur_time:$value|value=$value;$warn_level;$critical_level;0"
exit  $STATE_WARNING;
elif [[ "$value" -ge "$critical_level" ]]; then
echo "$HOSTADDRESS time is CRITICAL. $HOSTADDRESS_time-cur_time:$value|value=$value;$warn_level;$critical_level;0"
exit  $STATE_CRITICAL;
fi

###备注

#!/usr/local/bin/expect
set PASSWD  *******

set HOSTADDRESS [lindex $argv 0]
log_file /usr/local/nagios/libexec/check_time_data/host_time_$HOSTADDRESS
#log_user 0
log_user 1
spawn  ssh -t -p 22 supope@$HOSTADDRESS "date +%s"
expect {
        "(yes/no)?"
                    {

send "yes\r"
                        expect  "*assword" { send "$PASSWD\r"}

}
        "*assword"  {

send "$PASSWD\r"
                    }

}
expect eof

最新文章

  1. MFC---给按钮加上快捷键
  2. 【WP开发】读写剪贴板
  3. js正则验证邮箱、手机号、年龄
  4. 去除字符串中空格的方法(2016.1.12P141-2)
  5. iOS计算缓存文件的大小
  6. ZOJ3469 Food Delivery 区间DP
  7. 【转】增加eclipse的运行内存 -- 不错!!
  8. 数据结构学习——shell排序的C语言实现
  9. AD 10 直接出 BOM 的漂亮效果
  10. Java动态代理简单应用
  11. Cookie 的设置和获取
  12. zigbee端口的理解
  13. php倒计时
  14. Docker学习笔记-Redis 安装
  15. [ZJOI2016]小星星&amp;[SHOI2016]黑暗前的幻想乡(容斥)
  16. [SHOI2014]概率充电器(概率+换根dp)
  17. Date、Calendar、DateFormat类
  18. OCR库Tesseract初探
  19. AndrewNG Deep learning课程笔记 - CNN
  20. BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)

热门文章

  1. 浅谈C++中内存泄漏的检测
  2. uoj#267. 【清华集训2016】魔法小程序(乱搞)
  3. python 的 数据类型
  4. boot接入elasticsearch
  5. java操作rabbitmq实现简单的消息发送(socket编程的升级)
  6. TabBar背景颜色设置
  7. [題解](最短路/二分)luogu_P1462通往奧格瑞瑪的道路
  8. 用注解@DelcareParents实现引用增强
  9. Azkaban的架构(三)
  10. DDX_Text详细用法