I have to wrote a script where I am able to echo a result of an SQL script, however I want to be able to send an email to myself when it is more than 0 (so whenever a value is returned) is this possible?
I tried one way from looking on the web but this didn't work, I have added my script below
Code:
duplicate_user_list=`psql cemdb admin -t -f /opt/ca/SAP_Tooling/sql/self_monitoring/duplicate_users.sql|sed '/^$/d' | awk '{print $1}'`
duplicate_user_count=`psql cemdb admin -t -f /opt/ca/SAP_Tooling/sql/self_monitoring/duplicate_users.sql|sed '/^$/d' | wc -l`
if [ "$duplicate_user_count" -eq 0 ]
then
duplicate_user_status="No Duplicate IP's Found"
else
duplicate_user_status="Duplicate IP's Found"
fi
if [ "$duplicate_user_count" -gt 0 ]
then
echo "mail sent to SAP Tooling Team" | mail -s "$duplicate_user_list" dummyuser@dummydomain.co.uk
The count works fine and returns what is expected
Any help will be much appreciated
Many Thanks
Moderator's Comments:
Please use CODE tags as required by forum rules!
For your benefit, I replaced your clear text e-mail-address with a dummy one.
Last edited by RudiC; 03-09-2017 at 10:23 AM..
Reason: Added CODE tags.
I've had to hard-code the variables in this example of course, but something like this should work.
Code:
$ cat script.sh
#!/bin/bash
duplicate_user_list="rod jane freddy"
duplicate_user_count=3
if [ "$duplicate_user_count" -gt "0" ]
then
echo "Duplicate users found, mailing you the details"
echo "$duplicate_user_list" | mail -s "Details of duplicate users" unixforum@localhost
exit 1
else
echo "No duplicate users found"
exit 0
fi
$ ./script.sh
Duplicate users found, mailing you the details
$ mail
"/var/mail/unixforum": 1 message 1 new
>N 1 unixforum@localhost Thu Mar 9 13:30 15/667 Details of duplicate users
? 1
<Some headers redacted for privacy reasons>
Subject: Details of duplicate users
To: <unixforum@localhost>
X-Mailer: mail (GNU Mailutils 2.99.99)
rod jane freddy
? d 1
? q
Held 0 messages in /var/mail/unixforum
$
You will of course have to edit the code I provided so that it has your own variable defitions, and you'll need to change the line that sends the mail to have your own e-mail address in it.
But as you can see from my own run of the script which I included as sample output, it did run, and sent me an e-mail which I was able to read.
What output did you get from the script ? What type of system are you running it on, and what shell are you using ? For reference, my own system is running Linux, specifically Ubuntu 16.04 LTS x86_64, and this script is set up to use Bash as the shell.
On top of what drysdalk said, you might want to reduce resource consumption by running the psql query just once. One option would be to use "here strings" provided by recent shells (ksh, bash):
Code:
read CNT USR <<< $(psql ... | awk 'NF {T = T " " $1; CNT++} END {print CNT, T}')
I am running this on Putty using a bash shell script. My code is:
Code:
duplicate_user_list=`psql cemdb admin -t -f /opt/ca/SAP_Tooling/sql/self_monitoring/duplicate_users.sql|sed '/^$/d' | awk '{print $1}'`
duplicate_user_count=`psql cemdb admin -t -f /opt/ca/SAP_Tooling/sql/self_monitoring/duplicate_users.sql|sed '/^$/d' | wc -l`
if [ "$duplicate_user_count" -gt 0 ]
then
duplicate_user_status="Duplicate Users Found Emailing The Details"
echo "$duplicate_user_list" | mail -s "Details of Duplicate Users" dummyuser@dummydomain.co.uk
else
duplicate_user_status="No Duplicate Users Found"
fi
echo "<metric type=\"IntCounter\" name=\"SQL|CEMDB|Users:Duplicate User IP Count\" value=\"$duplicate_user_count\"/>"
echo "<metric type=\"StringEvent\" name=\"SQL|CEMDB|Users:Duplicate User IP Status\" value=\"$duplicate_user_status\"/>"
My return is:
Code:
[rp1cem@wycvlapph036 self_monitoring]$ ./epagent_cem_database_metrics_TEST.sh
<metric type="IntCounter" name="SQL|CEMDB|Users:Duplicate User IP Count" value="3"/>
<metric type="StringEvent" name="SQL|CEMDB|Users:Duplicate User IP Status" value="Duplicate Users Found Emailing The Details"/>
[rp1cem@wycvlapph036 self_monitoring]$
Cheers
Moderator's Comments:
Please use CODE (not QUOTE) tags as required by forum rules! And again, I replaced your clear text e-mail-address with a dummy one.
Last edited by RudiC; 03-09-2017 at 10:23 AM..
Reason: Changed QUOTE to CODE tags.
I was meaning what is the nature of the system that's running the script ? What you're running on your own PC isn't really relevant. Is it Linux/Solaris/AIX/etc, and what shell are you using ? If you copy-and-paste in its entirety the sample code I gave you into a fresh script (with the only change being the e-mail address), does that at least run and send you an e-mail ?
I am running the gaussian program on UNIX with bash and I want to form a script that will email me once the output life terminates either "normal termination" or "false" I just started learning this last week so could you let me know how to go about this.:b: (13 Replies)
This is my first time writing a script and Im having some trouble,
Im trying to use the top command to monitor processes and the amount of CPU usage they require, my aim is to get an email if a process takes over a certain percentage of CPU usage
I tried grep
Obviosly that hasnt worked,
Any... (8 Replies)
Hi all,
I have a task on my plate which is of high priority.
I need an automated email alert that checks FTP notices subdirectory on a daily basis and forwards any word files to a group of people. This word files gets created whenever there is an issue with FTP connectivity.
Please help...... (1 Reply)
Hello,
I want a script that will scan the file /etc/httpd/conf/httpd.conf and the folder /etc/httpd/libexec/
-bash-2.05b# grep mod_r /etc/httpd/conf/httpd.conf
LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c
-bash-2.05b#
-bash-2.05b# find... (4 Replies)
I need to code a script, which will run via cron, every 30 minutes.
The script will read a file containing a date&time and number (which represents disk space). The file gets appended to every 30 minutes. Here's a sample of the file:
CPU 1:04/25/02 1:00 am:1972554
CPU 1:04/25/02 1:30... (1 Reply)