---------- Post updated at 09:15 PM ---------- Previous update was at 09:14 PM ----------
I need help in this script. I want the outcome to finish with one file at a time in an email body
WHAT AM I doing wrong?
I agree with pravin27 that there is no way to know what is wrong with this script if you don't clearly describe what it is supposed to do... But, there are some obvious problems:
Since you don't indent your code, it is somewhere between difficult and impossible to see the structure of your code.
You create $MAILFILE before you start your loops (saying that errors have been detected (before you know if any errors have been detected) and add notes to that file during the outer loop. But the contents of that file are not cleared when you move on to a new file in the loop and the contents of that file (which one might assume from the name is to be e-mailed to someone is never used by this script to do anything but add lines to it) are never sent to anyone.
Using cat to print the contents of a directory is generally a waste of time; a directory is not a text file. And, whether you use cat or the much more efficient file redirection to get the contents of a directory, input to the mail command needs to be text; not the contents of a directory.
Do you really need to send individual e-mails to all of the recipients listed in emailparm? Why not create a list of recipients outside the loop and just send one e-mail?
This User Gave Thanks to Don Cragun For This Post:
I see that you chose to ignore all of the comments I made in post #3 in this thread, so there is a good chance that I have guessed wrong in several ways; but, if we rearrange your script slightly, does this come closer to doing what you need? Since you have not told us what shell or operating system you're using, the following code assume that you are using a shell that meets basic POSIX shell command language requirements. And, since we have no sample data to work with, this is entirely untested....
I have strong doubts that the line of code shown in red above is ever going to find a matching line (and will therefore report that every file contains errors; but without seeing the data you are searching, it is just a doubt and I have to assume that those two grep commands will actually find a single line that contains both CompletionCode without a trailing colon and with a trailing colon in report files that indicate successful completion of the associated job.
This will send one e-mail message to your list of recipients for each job that "failed". (If you wanted a single e-mail message summarizing all of the failed jobs found, I assume you would have selected a different subject line for the e-mail messages.)
******************
this script works perfect but it keeps adding to the email each file..For instance if 4 files have a rc 4 then an email will go out with the first one then another email will go out with the first and seconf one, then another email will go out with first second and third one listed in the email. I just want one email for each file that has a rc 4.
LIKE THIS:
NOT LIKE:
Moderator's Comments:
Please use code tags as required by forum rules!
---------- Post updated at 09:47 AM ---------- Previous update was at 09:27 AM ----------
Quote:
Originally Posted by Don Cragun
I agree with pravin27 that there is no way to know what is wrong with this script if you don't clearly describe what it is supposed to do... But, there are some obvious problems:
Since you don't indent your code, it is somewhere between difficult and impossible to see the structure of your code.
You create $MAILFILE before you start your loops (saying that errors have been detected (before you know if any errors have been detected) and add notes to that file during the outer loop. But the contents of that file are not cleared when you move on to a new file in the loop and the contents of that file (which one might assume from the name is to be e-mailed to someone is never used by this script to do anything but add lines to it) are never sent to anyone.
Using cat to print the contents of a directory is generally a waste of time; a directory is not a text file. And, whether you use cat or the much more efficient file redirection to get the contents of a directory, input to the mail command needs to be text; not the contents of a directory.
Do you really need to send individual e-mails to all of the recipients listed in emailparm? Why not create a list of recipients outside the loop and just send one e-mail?
I am sorry but I am just starting Unix scripting. So with the cript you just sent me don't I need to define the variable RECIPIENTS with every ones name in it so that it will mail to recipients. and when I do that do I actually place their full email address with a comma or a colon?
---------- Post updated at 10:02 AM ---------- Previous update was at 09:47 AM ----------
******************
while doing this it just runs in a loop it does not end??????
Last edited by RudiC; 05-18-2016 at 11:09 AM..
Reason: Added code tags (again).
The mail command you are using is not standardized, but on most UNIX and UNIX-like systems, the mail utility takes one or more operands (after the options have been processed) with each operand specifying the e-mail address of someone who should receive that message. What operating system are you using?
If you want to send mail just to yourself while testing (instead of to the list of recipients specified in /home/p611568/d2e/xeenos_scripts/emailparm) and to enable us to see where my code is getting stuck in an infinite loop, change the second line of your version of my script from:
to:
and then change the line:
to the two lines:
Move a couple of *.rpt files from /home/p611568/d2e/error_directory back to /home/p611568/d2e/logs so there will be files to process before you run this script again. (I assume that these two directories are on the same filesystem so the timestamps won't change when you move them.)
Then, run the script again and show us the trace log it prints while running (in CODE tags, please) so we can verify that the recipient list is being created correctly and see where my code is going into an infinite loop.
Note that my script moved the code creating the entire mail message inside the then clause of the if statement that sends the email. the code you showed us earlier initializes the mail file contents with three lines of data before entering the for loop and then adds two more lines to that file every time a failed file is found. This is why subsequent mail messages contain more and more files at the end of the message.
This User Gave Thanks to Don Cragun For This Post:
Hello Experts,
I have the following questions to be discussed here at this esteemed discussion forum.
I have two Excel sheets which contain Unix Commands llike creating directory the structure/ftp/Copy/Zip etc to basically create an environment. I need help in understanding some of... (1 Reply)
i need help with this problem this is the problem: Write a script that logs how many users login on/off the system over a 5 minute period. It can run in the foreground, and run 4 times a minute. Set a trap that will not allow a CNTRL-C command, and if a CNTRL-C is excuted store the time and date... (1 Reply)
how to check if a unix script gets executed without errors across all unix platforms.
incase if a script gets executed without errors only one platform say AIX, what needs to be done to that script such that it will run all unix platforms like linux, hp, sun etc (2 Replies)
Hi Gurus,
I am a system admin in solaris field and ive planned to study unix scripting.ive planned to start reading Mastering Unix scripting by randal.Scripts in that are based on Korn shell(ksh).my question is whether the same scripts can be applied to other shells like bash etc..And... (4 Replies)
Hi Gurus,
I am a system admin in solaris field and ive planned to study unix scripting.ive planned to start reading Mastering Unix scripting by randal.Scripts in that are based on Korn shell(ksh).my question is whether the same scripts can be applied to other shells like bash etc..And... (1 Reply)
Hello every one, plz help me out. I m using 4 files in unix, like file1, file2, file3,file4 in which primary key is ID in column(field) of 4 files.
On the bases of ID, i want the corresponding field of 4 files in final file let say collected file. In collected file, ID column should occur only one... (16 Replies)
Hi All,
I am new to Unix Scripting. I have below scenario. I need to write a Unix function with the following.
1. I have table. From this table I need to write a query.
SELECT Col1(File_nm),Col2(From_Loc),Col3(To_Loc)
FROM A
WHERE CONDITION
For... (1 Reply)
:confused: I need to find a place or places on the Internet where I can find UNIX scripts to view and to modify to make life easy on the UNIX environment. Can someone help me on this. Thanks (7 Replies)