Assistiance in small bash script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Assistiance in small bash script
# 1  
Old 07-21-2013
Assistiance in small bash script

Hi All,
i wrote an simple script, that will monitor some services ,and if particular service will found down ,the code will restarts the service and message about the process will be sent on mail.

I have a problem somewhere in the syntax that the script initializes the service even if is up ..

Your help please, what should I fix the code :
Code:
#!/bin/bash
# running. If its not it is restarted and an email is sent to
# the configured mailbox.
SERVICE=/etc/init.d/xinetd
MAILBOX=*********
STATUS="/etc/init.d/xinetd status"
if [ "$SERVICE status" != 'xinetd is stopped' ]
then
  /etc/init.d/xinetd restart
  $STATUS | mail -s "the xinet.d service getting restart" $MAILBOX
fi
exit 0


Last edited by Scott; 07-21-2013 at 03:32 AM.. Reason: Please use code tags
# 2  
Old 07-21-2013
If I read this correctly, you only want to restart the service if it is stopped.

If that is the case then your issue is the if statement logic...

Code:
if [ "$SERVICE status" != 'xinetd is stopped' ]

Which says if '$SERVICE' *is not* equal "xinetd is stopped" then restart xinetd...

I believe what you are looking for is:

Code:
if [ "$SERVICE status" = 'xinetd is stopped' ]

Which says if '$SERVICE' *is* equal to "xinetd is stopped" then restart.
# 3  
Old 07-21-2013
Thanks for the help, but it does not work .. Smilie
It was also the first option that i tried to debug the script.
# 4  
Old 07-21-2013
You need something like:
Code:
if [ "$($SERVICE status)" =  "some status string" ])
then

to compare the textual status output of the xinetd stop/start script...

If the xinetd stop / start script outputs a return code; you could try something like:
Code:
if ! $SERVICE status > /dev/null 2>&1
then

# 5  
Old 07-21-2013
Code:
if [ "$SERVICE status" = 'xinetd is stopped' ]

In this case, "$SERVICE status" is equal to "/etc/init.d/xinetd status", not 'xinetd is stopped'

I suggest you to use exit code instead of what is outputed. (I do not have xinetd on my machine, so I'll use bind in this example):

Code:
unix.com# /etc/init.d/bind9 start
[ ok ] Starting domain name service...: bind9.

unix.com# /etc/init.d/bind9 status
[ ok ] bind9 is running.

unix.com# echo $?
0

unix.com# /etc/init.d/bind9 stop
[ ok ] Stopping domain name service...: bind9

unix.com# /etc/init.d/bind9 status
[FAIL] bind9 is not running ... failed!

unix.com# echo $?
3

In your script, you do:

Code:
SERVICE=/etc/init.d/xinetd
MAILBOX=*********
STATUS="/etc/init.d/xinetd status"

$SERVICE status > /dev/null
x="$?"
echo "Exit Code is $x"
if [ "$x" -eq ...whatever it is when NOT running ]; then 
Restart the service
Continue your script here

# 6  
Old 07-22-2013
tukuyomi is correct, I did not even notice that you were using "$SERVICE status"... for some reason I thought I saw "$STATUS" which would have been more correct as it contained the output from $($SERVICE status).

Yet, even more correct (as tukuyomi pointed out) would have been the exit code from the service command vs the resulting text output from the service command.
# 7  
Old 07-22-2013
Actually, Scrutinizer's reply is way more simple to use Smilie
if ! $SERVICE status > /dev/null 2>&1uses exit status as well; in this case if $SERVICE status did not (!) exit with status 0; then rest of the code...
This User Gave Thanks to tukuyomi For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Making a bash script and small C program for a homework assignment

Here's the assignment. I'll bold the parts that are rough for me. Unfortunately, that's quite a bit lol. The syntax is, of course, where my issues lie, for the most part. I don't have a lot of programming experience at all :/. I'd post what I've already done, but I'm so lost I really don't know... (1 Reply)
Discussion started by: twk101
1 Replies

3. UNIX for Dummies Questions & Answers

need help with small script

Hi I have the below file Name=abc Yr=2011 Mon=05 My script should be in such a way that whenever I run it then Month should increment by 1 and if the month is 12 then when I run the script then year should incremented by 1 and month Should become 01(I.e jan) Thanks for the help in... (6 Replies)
Discussion started by: kishu
6 Replies

4. AIX

Need help in a small script

Hello all, could somebody help..? I have following 6 files (with white spaces in their names) This is file This is file1 This is file2 This is file3 This is file4 This is file5 This is file6 I tried to run the below script, and it did not give me desired ouput.. $ for i in `ls -1` >... (7 Replies)
Discussion started by: gsabarinath
7 Replies

5. Shell Programming and Scripting

need a small script

Hello all, i have a batmail process running on my machine(java process). i just need a script we should detect whether the batchnail is running or not.If not it should restart it. Can anyone assist me on this? (1 Reply)
Discussion started by: Rayzone
1 Replies

6. Shell Programming and Scripting

A small project with bash script and craigslist

Before I start, I'm posting this for community knowledge, not to offend anyone. I thought it was an interesting project so that's why I'm sharing it. In the notorious erotic classified ads of craigslist, thousands of individuals post classifieds, using the internet to sell themselves with an... (0 Replies)
Discussion started by: hexpill
0 Replies

7. Shell Programming and Scripting

small script

Hi, I am new to unix shell scripting. I just want a little script to check the no. of processes are equal to 8, then echo a successful message otherwise echo a unsuccessful message. Please help. Thanks. (3 Replies)
Discussion started by: everurs789
3 Replies

8. Shell Programming and Scripting

bash script working for small size files but not for big size files.

Hi, I have one file stat. Stat file contents are as follows: for example. H50768020040913,00260100,507680,13,0000000643,0000000643,00000,0000 H50769520040808,00260100,507695,13,0000000000,0000000000,00000,0000 H50770620040611,00260100,507706,13,0000000000,0000000000,00000,0000 Now i... (1 Reply)
Discussion started by: davidpreml
1 Replies

9. Shell Programming and Scripting

small script help

here is a small script: if ; then echo please enter an argument fi if [ "$1" = "tom"; then a=$1 echo $a fi here is my question. if the script name is j.sh and I run it : j.sh from shell prompt: without a parameter: it prints please enter an argument but if I go with . j.sh (current... (1 Reply)
Discussion started by: rkl1
1 Replies

10. Shell Programming and Scripting

Need help in a small script

Hi all, I have a file of the following format - EXPRPT:SCN:1.1706E+10:SEQ_START:121652:SEQ_END:121664:0 ( This file name is variable and changes daily) Now in the same directory I have another set of files of the format - EXPRPT.log.0001.0000121669 Now what I am trying to do is to ... (2 Replies)
Discussion started by: super_duper_guy
2 Replies
Login or Register to Ask a Question