监控linux各主机系统时间是否一致
#!/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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!