Hello All,
I have need as below:
1--> I need to get all users(who submit jobs) and their details by using below command:
qstat -u \*
output of the above command looks line below:
job-ID prior name user-id state "submit/start at" queue jclass slots ja-task-ID
-------------------------------------------------------------------------------------------
147956 10.29988 python_val user1 r 07/19/2017 07:30:15 queue1 1
147960 10.29988 python_dev user1 r 07/19/2017 07:30:33 queue2 1
147504 0.31988 gbdt_1.4.1 user2 r 07/19/2017 05:41:20 queue3 1
122900 0.30988 run_python user3 r 07/10/2017 01:10:01 queue4 1
The above output is space separated and i am interested in job-id, user-id and submit/start at (which is job submit date) from the above output
2--> I have another command which displays all users details from ADS as below:
/ccore/pbis/bin/enum-members "adsusers"
The output of the above command looks like below: (i am displaying one user's output, complete output contains bulk of below same blocks)
User object [001] (XXXXXXXX)
============
Enabled:
Distinguished name:
SAM account name:
NetBIOS domain name:
UPN: email@FINCO.COM
Display Name:FName LName
Alias: user-id
UNIX name:
GECOS:
Shell:
Home directory:
Windows home directory:
Local windows home directory:
UID:
Primary group SID:
Primary GID:
Password expired:
Password never expires:
Change password on next logon:
User can change password:
Account disabled:
Account expired:
Account locked:
In the above output i am interested in UPN (email), Display Name, Alias (user-id) from the above output
3 --> Now the requirement is i need to get the job details which are running more than last 7 days and send those details to user (which i will get email id from point#2)
currently i am getting this by following script:
!#/bin/bash
for line in `qstat -u \* | awk -v dt="$(date "--date=$(date) -7 day" +%m/%d/%Y)" 'BEGIN{OFS=":"}/qw/{if($6<dt) print $4,$1}'`;
do
user=$(echo $line | awk -F":" '{print $1}');
jobid=$(echo $line | awk -F":" '{print $2}');
email=$(/ccore/pbis/bin/enum-members "adsusers" | grep ^UNIX -B3 | grep $user -B2 | grep UPN | awk '{print $2}');
userName=$(/ccore/pbis/bin/enum-members "adsusers" | grep ^UNIX -B3 | grep $user -B2 | grep -i "Display Name" | awk -F":" '{print $2}')
echo -e "Hello $userName,\n\n Job(s) with job id(s): $jobid executing more than last 7 days, hence request you to take action, else job will be killed in another 1 days, \n\n Thank you." | mailx -s "Long running job for user: $userName ($user) and Job ID: $jobid" "${email}"
done
I know i am using a pattern matching using qw which i had to do and i am getting output as below:
Email Subject: Long running job for user: FName LName (user-id) and Job ID(s): job-id
Email Body:
Hello FName LName,
Job(s) with job id(s): job-id executing more than last 7 days, hence request you to take action, else job will be killed in another 1 days,
Thank you.
How can i implement the above script using awk? I know I am using awk, but its in bits and peaces.
Also the issue with the above script is - if the user submit more than one job, for example 2 in above case (user1 with job id-147956 and 147960), he is receiving 2 separate emails, but he should receive one email with 2 job details.
can some one please help me to fix this?
Thank you!!