Thanks but since I'm not familiar with perl I'll stick with awk. I'll look at 
skipping the grep stage.

Bobby Bauer
Center for Information Technology
National Institutes of Health
Bethesda, MD 20892-5628
301-594-7474



-----Original Message-----
From: McKown, John [mailto:john.mck...@healthmarkets.com] 
Sent: Wednesday, December 08, 2010 4:52 PM
To: LINUX-390@VM.MARIST.EDU
Subject: Re: Need a little help with a Linux script

If you'd like something a bit simplier:


#!/bin/sh
ADMINA="baue...@mail.nih.gov"
dt=$(date '+%a %b %e %I:%M %p')
svr=$(hostname)
ALERT=75
mpstat | awk ' /all/i {print $4;}'|
while read output;
 do
  cpuutil=$(echo $output | perl -n -a -e '$F[0]=~s/\..*$//;print "$F[0]\n";')
  if [ "$cpuutil" -ge $ALERT ]; then
  echo "CPU utilization has risen beyond the alert threshold on $svr at $dt"|\
   mail -vs "Alert:- CPU utilization is high on $svr at $dt" $ADMINA
 fi
done

I replaced the "grep -i all|awk {print $4}| cut -d'%' -f 1" with the perl code. 
The perl script looks at the first blank delimited "token" in $output and 
removes everything after the first period, assigning that to $cpuutil. Saves 
some steps. If you don't mind using perl instead of awk and cut. It should also 
work with a non-BASH shell as well. I also have problems telling a ` from a ', 
so I replaced it with $(...) . That's just me.

Another possibility would be:

cpuutil=$(echo $output|awk '/all/i {print $4}'|cut -d'%' -f 1);

which eliminated the "grep -i all" stage with awk's pattern matching instead, 
but leaves the $cputuil being "n.nn" and so still needing the ${cpuutil/%.*/} 
in the "if".


--
John McKown 
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone * 
john.mck...@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or 
proprietary information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. 
HealthMarkets(r) is the brand name for products underwritten and issued by the 
insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance 
Company(r), Mid-West National Life Insurance Company of TennesseeSM and The 
MEGA Life and Health Insurance Company.SM

 

> -----Original Message-----
> From: Linux on 390 Port [mailto:linux-...@vm.marist.edu] On 
> Behalf Of Bauer, Bobby (NIH/CIT) [E]
> Sent: Wednesday, December 08, 2010 1:41 PM
> To: LINUX-390@VM.MARIST.EDU
> Subject: Need a little help with a Linux script
> 
> I'm trying to write a little script and having trouble 
> comparing integers and decimal numbers. The shell doesn't 
> like it and I haven't been able to figure out how to get 
> around it. Script is named zyx.
> 
>       1 #!/bin/sh
>       2 ADMINA="baue...@mail.nih.gov"
>       3 dt=`date '+%a %b %e %I:%M %p' `
>       4 svr=`hostname`
>       5 ALERT=75
>       6 mpstat | grep -i all |awk '{print $4}'|
>       7 while read output;
>       8 do
>       9  cpuutil=`(echo $output | awk '{ print $1}' | cut -d'%' -f1 )`
>      10     set -x
>      11  if [ "$cpuutil" -ge $ALERT ]; then
>      12    echo "CPU utilization has risen beyond the alert 
> threshold on $svr at $dt"| mail -vs "Alert:- CPU utilization 
> is hi        gh on $svr at $dt" $ADMINA
>      13  fi
>      14 done
> 
> xyz
> + '[' 3.19 -ge 75 ']'
> /usr/sbin/xyz: line 11: [: 3.19: integer expression expected
> + read output
> 
> mpstat is returns 3.19 and I'm trying, on line 11, to compare 
> that to ALERT which is set to 75. I think I need to strip off 
> the decimal part of 3.19 but haven't found any way to do it. 
>  
> 
> Bobby Bauer
> Center for Information Technology
> National Institutes of Health
> Bethesda, MD 20892-5628
> 301-594-7474
> 
>  
> 
> ----------------------------------------------------------------------
> For LINUX-390 subscribe / signoff / archive access instructions,
> send email to lists...@vm.marist.edu with the message: INFO 
> LINUX-390 or visit
> http://www.marist.edu/htbin/wlvindex?LINUX-390
> ----------------------------------------------------------------------
> For more information on Linux on System z, visit
> http://wiki.linuxvm.org/
> 
> 
----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to lists...@vm.marist.edu with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390
----------------------------------------------------------------------
For more information on Linux on System z, visit
http://wiki.linuxvm.org/

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to lists...@vm.marist.edu with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390
----------------------------------------------------------------------
For more information on Linux on System z, visit
http://wiki.linuxvm.org/

Reply via email to