3

I am getting syntax errors when I try to check the exit status of a bash script using monit's "check program". If I run the bash script manually, it doesn't error. But if I do monit reload with my monit check program in the config, monit gives me errors.

Here's my current monit .conf file --

check program myscript with path "/etc/monit.d/script_to_run.sh"
  if status != 0 then alert

If I change it to this to make sure monit uses bash to parse the file...

check program myscript with path "/usr/bash /etc/monit.d/script_to_run.sh"
  if status != 0 then alert

Then I get this error

Warning: Program does not exist: '"/bin/bash /etc/monit.d/script_to_run.sh"'

Even a test script results in errors -- If I have this in script_to_run.sh:

#!/bin/bash
exit 0

Monit will complain

Error: syntax error 'exit'

If I have this in script_to_run.sh:

#!/bin/bash
echo "hello"

Monit will complain

Error: syntax error 'echo'

For reference -- I have monit 5.4, have followed the "check program" example in the man monit doc, and am able to configure/use monit "check process..." just fine on the same server.

Nakilon
  • 34,866
  • 14
  • 107
  • 142
lemon lime pomelo
  • 316
  • 1
  • 2
  • 14

2 Answers2

7

ok, fixed. for future reference for anyone reading this -- never put .sh files in /etc/monit.d/

that was the problem. i moved the .sh file to a different directory and everything is fine now.

lemon lime pomelo
  • 316
  • 1
  • 2
  • 14
0

I am using Amazon AMI on AWS cloud. Unfortunately, by default Amazon is shipping older version of Monit - 5.2.5

https://forums.aws.amazon.com/thread.jspa?threadID=215645

They suggest to install version of monit otherwise. Amazon forum gave this workaround:

sudo yum install -y https://kojipkgs.fedoraproject.org//packages/monit/5.14/1.el6/x86_64/monit-5.14-1.el6.x86_64.rpm
Mayank Jaiswal
  • 12,338
  • 7
  • 39
  • 41