我正在使用一个名为PRTG的监控系统来监控我们的环境。PRTG KB建议使用一个名为SSH脚本的脚本来监控进程。脚本需要存储在/var/prtg/scripts中。
我发现了一个有人用于PRTG的脚本:
#!/bin/sh
pgrep wrapper $1 2>&1 1>/dev/null
if [ $? -ne 0 ]; then
echo "1:$?:$1 Down"
else
echo "0:$?:OK"
fi
但是,PRTG在Web GUI中返回以下错误代码:
响应格式不正确:";pgrep:只能提供一种模式。有关详细信息,请尝试"pgrep--help"。1:0:Wrapper Down";
然而,当我在Linux服务器上运行脚本时,它会打印出来:
0:1:OK
所以我的问题是,什么是最好的脚本来告诉PRTG一个过程是";向下";或";UP";?
###################编辑以进一步澄清:
我修改了脚本,它在命令行上运行得很棒。。。但问题似乎在于PRTG如何读取输出。显然它的格式不正确。这是我的脚本:
#!/bin/bash
SERVICE="wrapper"
if pgrep -x "$SERVICE" >/dev/null
then
echo "$SERVICE is running"
else
echo "$SERVICE stopped"
fi
这就是PRTG出错的地方:
Response not well-formed: "wrapper is running "
所以。。。PRTG说我使用的传感器希望脚本输出为以下格式:
The returned data for standard SSH Script sensors must be in the following
format:
returncode:value:message
Value has to be a 64-bit integer or float. It is used as the resulting value
for this sensor (for example, bytes, milliseconds) and stored in the
database. The message can be any string (maximum length: 2000 characters).
The SSH script returncode has to be one of the following values:
VALUE DESCRIPTION
0 OK
1 WARNING
2 System Error
3 Protocol Error
4 Content Error
所以我想现在。。。问题是我如何让这个脚本输出PRTG想要看到的内容?
根据您对脚本所做的更改,is将如下所示,并像以下示例一样调用:servicecheck.sh sshd
#!/bin/sh
pgrep -x $1 2>&1 1>/dev/null
if [ $? -ne 0 ]; then
echo "1:$?:$1 Down"
else
echo "0:$?:OK"
fi