I am developing a script for writing out the failed jobs in file,
1)First step i need to create an empty file Status with today's date.
2)After that i need to execute the below command:
This will listout all the jobs in a project
job1
job2
job3
3)For each of the jobs listed out, i need to execute the below command:
$job_name will be replaced by job1 ,job2 and job3 in each run.
For example in the case of job1,
It will return the output like:
Since it contains Job Status : RUN FAILED (3) , the name "job1" need to be entered into the file created in the first step.
If it doesn't contain the term " RUN FAILED (3)" we need not write in to that file.,
For this i have developed the below script:
The first 2 steps are executing fine in the script.
An if statement requires a then and not do which is causing your error. I'd also change how you create your stats file name to make it more efficient.
If the shell you're using doesn't support $(...) then use back-quotes, but this syntax is now preferred.
You should also add the -q option to the grep command unless you really want to see all of the matches on the tty. It will also make grep a bit more efficient as it won't need to read all of the output.
If your grep doesn't support this, you can send the output to /dev/null.
An if statement requires a then and not do which is causing your error. I'd also change how you create your stats file name to make it more efficient.
If the shell you're using doesn't support $(...) then use back-quotes, but this syntax is now preferred.
You should also add the -q option to the grep command unless you really want to see all of the matches on the tty. It will also make grep a bit more efficient as it won't need to read all of the output.
If your grep doesn't support this, you can send the output to /dev/null.
Hope this helps.
Hi,
Actually i need to check the string "Job Status : RUN FAILED (3)" in the output of the command
But i suspect that the below command always return 0 as status code regardless of the string "Job Status : RUN FAILED (3)" in the output:
so $? always equals to 0 and all the jobs will be written into file.
Can anyone help me on this?
But i suspect that the below command always return 0 as status code regardless of the string "Job Status : RUN FAILED (3)" in the output:
Quote:/opt/app/dstage/DataStage752/Ascential/DataStage/DSEngine/bin/dsjob -server servername -user uname -password pwd -jobinfo $job_name | grep "Job Status : RUN FAILED (3)"
so $? always equals to 0 and all the jobs will be written into file.
The grep command should always exit with a non-zero code if the string was not found in the input text. Are you executing any commands between the grep and your if statement? If so, the $? value will be replaced with the value from that command and might thus always appear to be zero. Ensure that your if statement is immediately following the statement with grep. If it is, and you are still having problems, please post the whole script (it looks like you cut bits and pieces in your original post).
For example i have a job called 'job123' which has been finished fine .
So while executing the below code:
it gives:
So, while executing the below code:
t should return non zero return code since it doesn't contain the search string.
so $? gives 1.
At the same time, the below code also returns 1(even though the search term is found).
Can any one help me on this?
Thanks
Moderator's Comments:
Please use [CODE] tags () instead of [QUOTE] tags () when posting command lines, terminal output, ...
---------- Post updated at 01:25 PM ---------- Previous update was at 11:25 AM ----------
From the output:
I need to search for the strings "Job Status : RUN OK (1)" and " Last Run Time : Sun Aug 07"(sysdate-1).
May i know how to do this in grep?
Thanks
---------- Post updated at 06:37 PM ---------- Previous update was at 01:25 PM ----------
May i know how to retrieve the three parts "Mon Aug 08" from date function?
For example if it's "Mon Aug 08" then i need to check whether "Sun Aug 07" present in the output of the command:
And also search for the string "FAILED" in the output of the above command. if both searches are found in the output of the above command then the name 'job123' should be written to a file.
It is quite possible that the output from your dsjob command contains tab characters rather than spaces, and that would cause grep not to find your strings.
Try this as your grep expression:
That should search for the enough of the desired words, in order, without regard to intermediate whitespace (tabs or spaces) or special characters like the colon.
Unfortunately the date command is very inconsistent from version to version of *NIX. To that end, provided your awk supports the systime() and strftime() functions, this is probably the easiest way to get 'yesterday' in the string format that you want. It computes the current time, subtracts a day (86400 seconds) and finally formats it. The string is put into the shell variable "yesterday" which you can use on a grep command:
Given that, use egrep to match both lines, and test the number of matched lines rather than the return code to determine if there was a "hit."
Last edited by agama; 08-09-2011 at 11:14 PM..
Reason: fixed egrep
TAG flow Between SDR and DELTA
SDR is the Source table.
Delta is the target table having one staging table and one Main table.
Tags flows between SDR and Delta through ER gateway.
From SDR (SDR.CUSTOMER_PRODUCT and SDR.CUSTOMER_PRODUCT_RELATIONSHIP) the Tags flows to ER... (2 Replies)
Hi team,
I am looking to execute some command through xargs.
$cat testfile | grep myloc
alias myloc='cd /export/nfs-1sv-23/'
I am trying to execute that alias as soon as i cat and grep ?
I tried with $cat testfile | grep myloc | xargs --> no luck ...
Can some one assist me with... (6 Replies)
Hi,
I have a big list like this --> 3285
3289
328D
3291
3295
3299
329D
32A1
I need to make it like -->
3285|3289|328D|3291|3295|3299|329D|32A1
Please suggest. This is Linux OS. (8 Replies)
Hey all. Sometimes I'm tasked to change some router configs for the entire network (over 3,000 Cisco routers). Most of the time its a global config parameter so its done with a loop and an IP list as its the same configuration change for all routers. This is working OK.
However, sometimes an... (3 Replies)
hi,
Im trying to select from a sql using shell script and once i get count i need to add the count to the subject line and send mail to every1..
ex :
Select count(*) from emp;
In Shell script
echo $PASSWORD|$ORACLE_HOME/bin/sqlplus $USERID@$DBNAME @$SCRIPT_DIR/emp_count.sql... (1 Reply)
Hi!! Im new to shell scripting. I have an important assignment to complete in my company tomorrow. Please help me. I have to write an interactive script which does the following thing:
There is a file named ""rules"in a folder say /home/f1/ . This file contains text in the form:
123
345... (5 Replies)
Hi All,
I have a text file contains the follwoing info:
HOST_CONFIG spbf1n01 3181 patrolpv "B6abbKEW5L1TCE5B282445" I E W A
HOST_CONFIG spbf1n02 3181 patrolpv "B6abbKEW5L1TCE5B282445" I E W A
HOST_CONFIG spbf1n03 3181 patrolpv "B6abbKEW5L1TCE5B282445" I E W A
Whenever the String... (6 Replies)
hi
i am new to linux world please help me,i have two files in diff location
i need to compare both and i need to see difference b/w them
ex /media/txt (file1)
xxxxxx
xxxxxx
xxxxx
xxxxxx
xxxxxx
/media/rev/ (file2) rev is a folder which contains some files so i need to compare the files in... (3 Replies)
I have a code given below...
ERROR=`grep "Job Status" ${LOG_FILE}`
ERROR=${ERROR##*\(}
ERROR=${ERROR%%\)*}
if
then
echo "The job completed successfully"
EXIT_STATUS=0
else
echo "The job failed"
EXIT_STATUS=1
fi
can anybody tell me what is
ERROR=${ERROR##*\(}... (1 Reply)
Hi
I am looking for the script which can move 1month old data from a TXT file.actully in this file data is appended on daily basis.pleasehalp me out.
Thanks in advance (3 Replies)