- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - HP-UX
- >
- Re: help regarding bdf output shell script !!!!
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Forums
Discussions
Discussions
Discussions
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 12:56 AM
11-16-2007 12:56 AM
I have written a funtion which taken bdf output and put's in a file.
The idea is to get all areas greater than 80% and echo the same on the system once they have reached 80 % limit. However the script I have written fails with the error.
The script is :-
======================================
output ()
{/usr/bin/bdf -l |awk '$0 !~ /^F/' |awk '{print $5"\t" $6}'| sed 's/'%'/''/' >/tmp/bdflist}
panic ()
{while read percent dir
do
if [[ $percent -ge 80 ]]
then
echo "File syste Full - `hostname`:$dir is at $percent%"
fi
done} < /tmp/bdflist
output
panic
===========================================
+ awk $0 !~ /^F/
+ awk {print $5"\t" $6}
+ sed s/%//
+ 1> /tmp/bdflist}
./test[8]: Syntax error at line 9 : `do' is not expected.
Please assist in resolving the same.
Thanking you in advance
Solved! Go to Solution.
- Tags:
- bdf
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:03 AM
11-16-2007 01:03 AM
Re: help regarding bdf output shell script !!!!
$mailto = 'some@email_addr.com';
$hostname = `hostname`;
@mounts = `bdf`; #puts bdf info into seperate array elements
foreach (@mounts){
if ($_ =~ /100%|9[0-9]|8[0-9]%/) {
$fs = $';
chop $fs;
$mesg .= "$fs is at $&.\n";
}
}
if ($mesg) {
`echo "$mesg" | mailx -s "$hostname Filesystem Warning" $mailto`;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:03 AM
11-16-2007 01:03 AM
Re: help regarding bdf output shell script !!!!
{
/usr/bin/bdf -l |awk '$0 !~ /^F/' |awk '{print $5"\t" $6}'| sed 's/'%'/''/' >/tmp/bdflist
}
panic ()
{
cat /tmp/bdflist | while read percent dir
do
if [[ $percent -ge 80 ]]
then
echo "File syste Full - `hostname`:$dir is at $percent%"
fi
done
}
output
panic
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:08 AM
11-16-2007 01:08 AM
Solution($_ =~ /100%|9[0-9]|8[0-9]%/)
should be
($_ =~ /100%|9[0-9]%|8[0-9]%/)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:12 AM
11-16-2007 01:12 AM
Re: help regarding bdf output shell script !!!!
/usr/bin/bdf -l |awk '$0 !~ /^F/' |awk '{print $5"\t" $6}'| sed 's/'%'/''/'|
while read percent dir
do
if [[ $percent -ge 80 ]]
then
echo "File syste Full - `hostname`:$dir is at $percent%"
fi
done
Rgds...Geoff
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:38 AM
11-16-2007 01:38 AM
Re: help regarding bdf output shell script !!!!
The simple fix, is to place the curly braces for each function on a line by themselves:
...
output ()
{
/usr/bin/bdf -l |awk '$0 !~ /^F/' |awk '{print $5"\t" $6}'| sed 's/'%'/''/' >/tmp/bdflist
}
panic ()
{
while read percent dir
do
if [[ $percent -ge 80 ]]
then
echo "File syste Full - `hostname`:$dir is at $percent%"
fi
done
} < /tmp/bdflist
output
panic
...
This script could/should be rewritten to eliminate using temporary files (pipe output to the 'read') and should let ONE 'awk' do the work of matching and extracting (consider using 'awk's 'split').
For a simple script like this, in-lining your code like Geoff suggested is probably a more-readable approach.
Regards!
...JRF...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 01:43 AM
11-16-2007 01:43 AM
Re: help regarding bdf output shell script !!!!
include a shell interpreter and a few newlines:
#!/usr/bin/sh
output ()
{
/usr/bin/bdf -l |awk '$0 !~ /^F/' |awk '{print $5"\t" $6}'| sed 's/'%'/''/' >/tm
p/bdflist
}
panic ()
{
while read percent dir
do
if [[ $percent -ge 80 ]]
then
echo "File syste Full - `hostname`:$dir is at $percent%"
fi
done < /tmp/bdflist
}
output
panic
regards,
John K.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 02:54 AM
11-16-2007 02:54 AM
Re: help regarding bdf output shell script !!!!
http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=1124262
PCS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 03:36 AM
11-16-2007 03:36 AM
Re: help regarding bdf output shell script !!!!
bdfmegs -qP 90
Only the mountpoints that are greater than or equal to 90% full will be shown.
Bill Hassell, sysadmin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 04:26 AM
11-16-2007 04:26 AM
Re: help regarding bdf output shell script !!!!
Bill Hassell, sysadmin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 04:30 AM
11-16-2007 04:30 AM
Re: help regarding bdf output shell script !!!!
http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=1124262
Bill Hassell, sysadmin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 05:24 AM
11-16-2007 05:24 AM
Re: help regarding bdf output shell script !!!!
Here is one we have in production on all machines. It runs on Monday and Friday and looks for 80+% full as well as chack one particular vg.
Regards,
-dl
#!/usr/bin/ksh
#############################################################################
# 12/24/01 dlamar Scan % full for lvols #
# If over the threshold email sysadm #
# 08/21/02 dlamar Changed MAIL_LIST #
# 12/18/02 dlamar Added status of job home to daily report. #
# 12/26/02 dlamar Cleaned up the rm of .txt and .rpt. #
# 06/04/2003 dlamar Added logic to ignore cdrom. #
# 10/08/2003 rmark Corrected logic to check jobprod #
# #
#############################################################################
SCRIPT_HOME="/usr/local/bin/systems"
MAIL_LIST="your_email_address@somewhere.com"
if [ -f $SCRIPT_HOME/percent_full.txt ]
then
rm $SCRIPT_HOME/percent_full.txt
fi
if [ -f $SCRIPT_HOME/percent_full.rpt ]
then
rm $SCRIPT_HOME/percent_full.rpt
fi
echo "\t\t$(hostname)\tSYSTEM/JOB\tDISK\tSTATUS\tREPORT\t`date +%m/%d/%y`\n" > $SCRIPT_HOME/percent_full.rpt
bdf |while read diski
do
dper=`echo $diski | awk -F" " '{printf "%d\n", $5}'`
if [ $dper -gt 80 ]
then
dmount="`echo $diski |awk '{printf "%s\n", $6}'`"
if ( test "$dmount" != "/cdrom" )
then
echo "\t\t\t\t$dmount\t\t$dper% \n" >> /$SCRIPT_HOME/percent_full.txt
fi
fi
done
bdf | grep 0_40 | cut -c48-49 | sed '1d' | read job_percent
if [ $job_percent -gt 80 ]
then
bdf | grep 0_40 | cut -c48-66 | sed '1d' | read jobdir
echo "\t\t\t\t/jobprod\t\t$jobdir \n" >> /$SCRIPT_HOME/percent_full.txt
fi
if [ -f $SCRIPT_HOME/percent_full.txt ]
then
cat /$SCRIPT_HOME/percent_full.txt >> /$SCRIPT_HOME/percent_full.rpt
ux2dos $SCRIPT_HOME/percent_full.rpt | uuencode Lvols_Nearing_full.txt | mailx -m -s "JOBPROD Home & Lvols Over 80% Full on $(hostname)" $MAIL_LIST
fi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2007 05:41 AM
11-16-2007 05:41 AM
Re: help regarding bdf output shell script !!!!
#!/usr/bin/sh
typeset -i MAXPCT=95
typeset -i TIMEOUT=1 # number of days to retain LOCKFILE
BDFMEGS=/root/scripts/util/bdfmegs.sh
TEMPFILE=/tmp/check_filesystem_usage.${$}.tmp
LOCKFILE=/tmp/check_filesystem_usage.lck
# rm LOCKFILE if mtime > ${TIMEOUT}, so that duplicate reports will be generated, on occasion
find ${LOCKFILE} -type f -mtime +${TIMEOUT} -print | xargs rm -f 2> /dev/null
[ ! -f ${LOCKFILE} ] && touch ${LOCKFILE}
trap "[ -f ${TEMPFILE} ] && rm -f ${TEMPFILE}" 0 1 2 3 15
${BDFMEGS} -qglP ${MAXPCT} | grep -v '^$' > ${TEMPFILE}
if [ -s ${TEMPFILE} ]
then
$(grep -q -v -f ${LOCKFILE} ${TEMPFILE}) && \
{ grep -v -f ${LOCKFILE} ${TEMPFILE} >> ${LOCKFILE}
mailx -m -s "WARNING! FILESYSTEM(S) OVER ${MAXPCT}% FULL!" root << EOF
File-System Gbytes Used Avail %Used Mounted on
$(cat ${TEMPFILE})
Remember to delete ${LOCKFILE} after freeing up space!
EOF
}
# exit with rc of 1 if any filesystems with utilization > ${MAXPCT} were returned
exit 1
fi
# otherwise, exit with rc of 0
exit 0
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-18-2010 02:11 AM
02-18-2010 02:11 AM