【问题标题】:Nagios only printing part of the script's outputNagios 仅打印部分脚本输出
【发布时间】:2018-05-24 10:08:56
【问题描述】:

我有一个 bash 脚本,用于检查以确保已创建备份,并且我正在 nagios 中运行它。检查本身工作正常,但 nagios 并没有打印我在 shell 中运行时看到的所有相同输出。

bash 脚本:

#!/bin/bash
# Check whether a specified backup exists

filemask=$1

ls_output=$(smbclient \\\\Server\\Folder$ -U Domain\\Username%password -c ls | grep $filemask)
month=$(echo $ls_output | awk '{print $5}')
day=$(echo $ls_output | awk '{print $6}')
t=$(echo $ls_output | awk '{print $7}')

echo "Last Backup: $month $day $t"

today=$(date +%d)
yesterday=$(( 10#$today - 1 ))
if [ $yesterday -lt 10 ]; then
  yesterday="0$yesterday"
fi

if [ $day != $today -a $day != $yesterday ]; then
  exit 2
fi
exit 0

当我在 shell 中运行它时,我会得到类似的东西

Last Backup: May 24 11:03:44

但 Nagios 仅显示此输出:

Last Backup:

【问题讨论】:

  • 您的命令smbclient \\\\Server\\Folder$ -U Domain\\Username%password -c ls | grep $filemask 我认为返回空输出。检查 $1 内部是否不为空。
  • nagios 是如何运行你的脚本的?通过 bash 还是通过您的默认 shell?此外,请尝试在脚本开头设置 set -x 以获取有关变量中哪些值的更多详细信息

标签: bash nagios


【解决方案1】:

解决方案是 nagios 在 docker 容器内运行,因此在主机上工作的服务器的地址在 nagios 中不工作。 Smbclient 无法连接到服务器,但脚本仍在以 0 退出代码退出,因此 nagios 为绿色。

所以除了确保脚本为任何类型的错误提供退出代码 1 或 2 的重要性之外,该问题与 nagios 并没有太大关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2021-01-11
    • 2019-12-22
    • 2011-02-03
    相关资源
    最近更新 更多