Move Command and exit status problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Move Command and exit status problem
# 1  
Old 09-12-2008
Move Command and exit status problem

Hi All,

I am using the following code to move files from one folder to another on the remote server:

ssh username@server <<EOF
cd source_dir
find . -type f -name "*.txt" |xargs -n1000 -i{} mv {} dest_dir
if [$? !=0]
then send mail indicating error
otherwise
echo "success"
fi
EOF

Now,when i do the manual run of the script it works fine but when schedule run of the script takes place it send the mail to me indicating that some error has occured(though dont' know the exact error).

Could someone tell me why is this happening.Moreover, how can i track down the exact error message while the schedule run of the script is taking place.
# 2  
Old 09-12-2008
If you are running this from cron, any error message should arrive by email (unless you explicitly redirect standard error someplace). On the other hand, perhaps it would in fact make sense to capture standard output and standard error to a temporary file somewhere so you can inspect them in more or less real time.

Perhaps a good start would be to include the value of $? in the error report. If you capture standard error and standard output from the pipeline to a temporary file, include that in the email, too.

Note that the exit code from xargs might mask the exit code from mv

As a stylistic issue, the only command which really needs to run on the remote server is the find | xargs mv pipeline.

Code:
ssh username@server 'find source_dir -name "*.txt" | xargs -n 1000 -i {} mv {} destdir' &&
echo "Success" || mailx -s "fail" you@example.net

# 3  
Old 09-12-2008
Hi Era,

Thanks for the reply.

As per your reply , should i use the following code to trace the execution of commands:

ssh username@server 'find source_dir -name "*.txt" | xargs -n 1000 -i {} mv {} destdir' 1>>$filename 2>>$filename &&
echo "Success" || mailx -s "fail" you@example.net

$filename is present on my local server , will the above code be able to trace the messages. Else please suggest the other variant of the code to track the exact error message.The log file should be present on the local server.

Thanks for your understanding
# 4  
Old 09-12-2008
Pretty close, you want 2>&1 instead of 2>>$filename I guess. You probably want to send $filename with the mail message, and remove $filename after you're done.

Code:
ssh username@server \
'find source_dir -name "*.txt" | xargs -n 1000 -i {} mv {} destdir' >>$filename 2>&1 &&
echo "Success" || mailx -s "fail: $?" you@example.net <$filename

# 5  
Old 09-12-2008
Bug

Hi Era,

Thanks for the explanation and correcting me.

Is it possible to send the error description(system-defined) corresponding to the exitstatus. Please let me know.

Is there any difference if i use -n100 instead of -n 100 in the xargs command? Is that space important as i have tested my script without using the space.
# 6  
Old 09-12-2008
What do you mean by "error description(system-defined) corresponding to the exitstatus"?

The space between -n and the number is probably insignificant. There are various option-processing libraries and some are sensitive to these differences while others are not, so use whatever works for you.
# 7  
Old 09-12-2008
I mean if the exit status is 1 then how can we get the actual error message which the shell might have returned while running the command. (or do i have to use the user-defined message only)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Exit Status of Command

Hi All, I am doing an export and import (datapump) of 4 schema. I know we can do an export of 4 schema in one command. But just want to know how to check the exit status if i do the export/import of 4 schema in different commands in background. Please suggest. Thanks, Mani (1 Reply)
Discussion started by: pvmanikandan
1 Replies

2. UNIX for Dummies Questions & Answers

Exit Status Of Find Command

Hello All, I am trying to capture the exit status of find command and want to delete the files only when it is successful. But it is always returning me as success even if the pattern of that file doesn't exist in the current directory. please help, checked manual page but couldn't able to figure... (6 Replies)
Discussion started by: Ariean
6 Replies

3. HP-UX

[Solved] ssh debug1: Exit status 254 problem

Hello; Am experiencing odd problem with ssh: ========= ssh -vvv remote_host : : debug2: channel 0: rcvd adjust 65536 debug2: channel_input_status_confirm: type 99 id 0 debug2: shell request accepted on channel 0 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0... (4 Replies)
Discussion started by: delphys
4 Replies

4. UNIX for Advanced & Expert Users

Equivalents of tee command to find exit status of command

Hi, Want to log the output of command & check the exit status to find whether it succeeded or failed. > ls abc ls: abc: No such file or directory > echo $? 1 > ls abc 2>&1 | tee log ls: abc: No such file or directory > echo $? 0 Tee commands changes my exit status to be always... (7 Replies)
Discussion started by: vibhor_agarwali
7 Replies

5. Shell Programming and Scripting

problem in exit status of the command in a shell script-FTP

Hi All, I have developed below script for FTP a file from unix machine to another machine. ftpToABC () { USER='xyz' PASSWD='abc' echo "open xx.yy.zbx.aaa user $USER $PASSWD binary echo "put $1 abc.txt" >> /home/tmp/ftp.$$ echo "quit" >> /home/tmp/ftp.$$ ftp -ivn <... (3 Replies)
Discussion started by: RSC1985
3 Replies

6. Shell Programming and Scripting

Find exit status problem

Hi All Its strange or i am doing it wrong.When find run successful it return exit status 0.And same if it didn't run successfully it return zero. find /var/www/html -maxdepth 1 -type f -name *.dsadas echo $? 0 find /var/www/html -maxdepth 1 -type f -name *.php... (1 Reply)
Discussion started by: aliahsan81
1 Replies

7. UNIX for Dummies Questions & Answers

Move Command and exit status problem

Hi All, I am using the following code to move files from one folder to another on the remote server: ssh username@server <<EOF cd source_dir find . -type f -name "*.txt" |xargs -n1000 -i{} mv {} dest_dir if then send mail indicating error otherwise echo "success" fi EOF ... (1 Reply)
Discussion started by: visingha
1 Replies

8. Shell Programming and Scripting

Getting the exit status of a remote command

Hi to everyone. How can I get the exit status from a remote command executed with rexec? :eek: machine A has RedHat Linux 9 and the remote machine B has SCO UNIX. Code: rexec -l user -p password host sh /u/files/scripts/seq_cal.sh 2006 08 I want the exit status returned by... (1 Reply)
Discussion started by: zoonalex
1 Replies

9. Shell Programming and Scripting

Problem with exit status

Hi, Consider the output of the following commands: case1) ------- # ifconfig -a | grep "UP" | grep uplink0:1 # echo $? Output is: 0 case2 ------ # ifconfig -a | grep "UP" | grep uplink0:1; echo $? Output is: 1 In case2 we got the exit code as 1, which is the actual exit code.... (1 Reply)
Discussion started by: diganta
1 Replies

10. Programming

How to find the exit status of last command in Unix?

Hi, I want to find the exit status of the last executed command in C Shell. Tried $? but getting the error Variable syntax...$? does not seem to work in C shell.. is there any other command in C shell to find the exit status of last command? Thanks in advance, raju (1 Reply)
Discussion started by: rajugp1
1 Replies
Login or Register to Ask a Question