Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从Nagios设置Docker容器的监视_Bash_Docker_Nagios - Fatal编程技术网

Bash 如何从Nagios设置Docker容器的监视

Bash 如何从Nagios设置Docker容器的监视,bash,docker,nagios,Bash,Docker,Nagios,我正在尝试从nagios设置docker容器的监视。我的nagios在一个VM上,docker在另一个VM上。因此,为了监控docker,我尝试使用: 并将文件放在location/usr/lib64/nagios/plugins/ 但当我运行这个脚本时,它往往会抛出错误 错误: 检查\u docker:第40行:语法错误:意外的文件结尾 作为一个爪哇人,我真的不太了解这一点 那么,有谁能告诉我,我如何才能完成监控码头工人的任务,因为我已经在这方面浪费了我的时间 提前感谢您的帮助。问题是复制/粘

我正在尝试从nagios设置docker容器的监视。我的nagios在一个VM上,docker在另一个VM上。因此,为了监控docker,我尝试使用:

并将文件放在location/usr/lib64/nagios/plugins/ 但当我运行这个脚本时,它往往会抛出错误

错误:

检查\u docker:第40行:语法错误:意外的文件结尾

作为一个爪哇人,我真的不太了解这一点

那么,有谁能告诉我,我如何才能完成监控码头工人的任务,因为我已经在这方面浪费了我的时间


提前感谢您的帮助。

问题是复制/粘贴过程中出现意外的eol字符。

这实际上是一个Bash问题,或者更具体地说。。。这是一个特殊的字符在结尾,你可能看不到,因为你可能复制/粘贴从一个网站

问题原因:

很多网站都提到了eol问题,但都是简明扼要的

DOS使用回车符和换行符
(“\r\n”)
作为行尾,Unix只使用换行符
(“\n”)
。在Windows机器和Unix机器之间传输文件时需要小心,以确保正确翻译行尾

解决方案:

要修复unix样式eol的行尾,请运行
dos2unix file.sh
,但可能需要先安装该实用程序。在Ubuntu中,它将是
sudo-apt-get-install-dos2unix
。根据环境的不同,你的情况也可能相同

备选方案:

如果你想知道最后到底是什么,你可以看看Windows上的记事本+,因为它了解各种格式的下线字符。您需要启用菜单中的所有字符

Linux上,将显示相同的内容:

使用
M-x空白模式RET进行本地切换
,或查看链接了解(许多)详细信息和示例

#!/bin/bash

# Author: Erik Kristensen
# Email: erik@erikkristensen.com
# License: MIT
# Nagios Usage: check_nrpe!check_docker_container!_container_id_
# Usage: ./check_docker_container.sh _container_id_
#
# The script checks if a container is running.
#   OK - running
#   WARNING - container is ghosted
#   CRITICAL - container is stopped
#   UNKNOWN - does not exist

CONTAINER=$1

RUNNING=$(docker inspect --format="{{ .State.Running }}" $CONTAINER 2> /dev/null)

if [ $? -eq 1 ]; then
  echo "UNKNOWN - $CONTAINER does not exist."
  exit 3
fi

if [ "$RUNNING" == "false" ]; then
  echo "CRITICAL - $CONTAINER is not running."
  exit 2
fi

GHOST=$(docker inspect --format="{{ .State.Ghost }}" $CONTAINER)

if [ "$GHOST" == "true" ]; then
  echo "WARNING - $CONTAINER has been ghosted."
  exit 1
fi

STARTED=$(docker inspect --format="{{ .State.StartedAt }}" $CONTAINER)
NETWORK=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" $CONTAINER)

echo "OK - $CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED"