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/