Sponsored Content
Top Forums Shell Programming and Scripting Help me add Error Handling to my script Post 302681849 by agama on Saturday 4th of August 2012 03:39:07 PM
Old 08-04-2012
A couple of things that jump out at me immediately. First, what you intend to be a cat command to use as input to your loop won't actually execute the command. You'd need to put it into a form that the shell will interpret as 'execute this', but there is a better way.

Secondly, be careful using $? anywhere other than immediately following the execution of a command. In your continue function if you were try to use your exit statement, the value of $? would be the return of the print, not the value you intended.

Lastly, I would ensure that at least the host name is output in any message. It would be very frustrating as an operator/user to have the message "can't start NAS" and not know where.

This isn't exactly how I would have done it, but keeping with your general theme this should do what you intend:

Code:
# pass in the status to check as $1; the res of the parameters are the message if
# the status wasn't good
#
function on_error_continue
{
    rc=$1           # snag the exit code passed in

    if (( $rc > 0 ))
    then
        print "$2"
        #exit $?        # using $? here will be the exit code of the print; use exit $1 
    fi
}

#for hostname in cat hostfile   # this will not work -- it will run the loop for "cat" and "hostfile" and won't cat the hostfile
while read hostname
do
    rcp $DEPLOY $hostname:/var/tmp/$TYPE
    on_error_continue $? "Could not remote copy to $hostname"
    rsh $hostname "nice -n 39 ksh /var/tmp/$TYPE &"
    on_error_continue $? "Could not mount the NAS on $hostname"
done <hostfile   # read directly from hostfile; no need to use cat


Last edited by agama; 08-04-2012 at 04:45 PM.. Reason: added comment; cleaned up just a bit
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error Handling

Helo Experts, I need a help in handling errors in shell script, wants my errors displayed in text file instead of command window.. My shell script is here; cd /cygdrive/s/Files for FILES in ./*.* do temp=`basename $FILES` if cp $FILES /cygdrive/r/CopyFile1/$FILES; then echo "copy... (5 Replies)
Discussion started by: CelvinSaran
5 Replies

2. Shell Programming and Scripting

Finger and error handling

I have this segment of code : cmd = "finger -m " $1 " 2>/dev/null | head -1" cmd | getline userinfo close(cmd) Sometimes finger returns no such user when given a user id. With the redirection to the default trash file i am getting rid of any screen "finger:no such user" messages. I also want... (2 Replies)
Discussion started by: beatblaster666
2 Replies

3. Shell Programming and Scripting

Issue with Error handling,not able to continue the script further

Hi, I am trying to write a script to cleanup files in a log directory .. cd log find Datk** -mtime +7 -exec rm -f {} \; 2> /dev/null Have used the above to clean up files in log directory more then 7 days older. The file can be something like ( auto-generate by some processes and... (2 Replies)
Discussion started by: nss280
2 Replies

4. Shell Programming and Scripting

Help with Error Handling on Script

Hi, I need your guys help again. I run a script which check for some process status in a loop. when i check the process some of the process could throw an error, how can i check that inside my script. Thanks, RR (3 Replies)
Discussion started by: rrb2009
3 Replies

5. Shell Programming and Scripting

PERL error handling

I have a PERL command line embedded in a UNIX script. The script doesn't handle errors coming out of this command. I'm processing large files and occassionally I run out of disk space and end up with half a file. perl -p -e 's/\n/\r\n/g' < TR_TMP_$4 > $4 How do I handle errors coming out... (1 Reply)
Discussion started by: OTChancy
1 Replies

6. Shell Programming and Scripting

Error Handling

Below code works for different databases i.e. MYSQL and ORACLE The problem is for MYSQL in Block: if ; $? taking value accordingly but in case of ORACLE $? is always taking this value as zero (0). That is the reason in Oracle it always going in else Block in any case.. :( and in case of ... (4 Replies)
Discussion started by: ambarginni
4 Replies

7. Shell Programming and Scripting

Expect Script Error Handling

Good Day Everyone, I was hoping to get a little insight into an expect script that I've written. Basically we have this expect script to perform an sftp upload, key authentication is not an option, and sftp is the only method supported by our vendor, thus the need for this. I want to be... (3 Replies)
Discussion started by: thaller
3 Replies

8. Shell Programming and Scripting

Error handling

Hello fellow UNIX gurus :) I have a problem regarding the script below: # Variables used in this shell. power=0 # Stores squared integer total=0 # Sum of all squared integers num=0 # Stores command line arguements # Provides error handling if command line... (5 Replies)
Discussion started by: Learn4Life
5 Replies

9. Shell Programming and Scripting

error situation handling when starting app from a script

Hi, in my bash script I start 3rd party app that runs quickly normally and returns some data that I use later for processing. However if there are problems the app doesn't return anything and just hangs... then my script also hangs of course, awaiting for the app to comeback. Was wondering how to... (3 Replies)
Discussion started by: TomSu
3 Replies

10. Shell Programming and Scripting

Script FTP maintain error handling

Hi, I have ftp script like below How to insert an error handling, If the transfer failed then send mail to me. Actually, I just need the script to send an email if the FTP failed. How to put the email script within FTP script? Thank You Edy (5 Replies)
Discussion started by: edydsuranta
5 Replies
RSH(1)							      General Commands Manual							    RSH(1)

NAME
rsh - remote shell SYNOPSIS
rsh [-n] [-l username] host [command] host [-n] [-l username] [command] DESCRIPTION
Rsh connects to the specified host, and executes the specified command. Rsh copies its standard input to the remote command, the standard output of the remote command to its standard output, and the standard error of the remote command to its standard error. Interrupt, quit and terminate signals are propagated to the remote command; rsh normally terminates when the remote command does. The remote username used is the same as your local username, unless you specify a different remote name with the -l option. This remote name must be equivalent (in the sense of rlogin(1)) to the originating account; no provision is made for specifying a password with a com- mand. If you omit command, then instead of executing a single command, you will be logged in on the remote host using rlogin(1). Shell metacharacters which are not quoted are interpreted on local machine, while quoted metacharacters are interpreted on the remote machine. Thus the command rsh otherhost cat remotefile >> localfile appends the remote file remotefile to the localfile localfile, while rsh otherhost cat remotefile ">>" otherremotefile appends remotefile to otherremotefile. OPTIONS
-l username Specify the remote user name. -n Connect standard input of the remote command to /dev/null. Do this if rsh should not inadvertently read from standard input. SEE ALSO
rcp(1), rlogin(1), rhosts(5). BUGS
You cannot run an interactive command (like rogue(6) or vi(1)); use rlogin(1). 4.2 Berkeley Distribution April 29, 1985 RSH(1)
All times are GMT -4. The time now is 07:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy