"integer expression expected" error with drive space monitoring script

 
Thread Tools Search this Thread
Operating Systems Linux Fedora "integer expression expected" error with drive space monitoring script
# 1  
Old 01-05-2010
"integer expression expected" error with drive space monitoring script

Hi guys,

I am still kinda new to Linux.

Script template I found on the net and adapted for our environment:

Code:
#!/bin/sh
#set -x
ADMIN="admin@mydomain.com"
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  #echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo "Running out of space \"$partition $usep% used\" on $(hostname) as on $(date)" |
     mail -s "Alert:$(hostname) almost out of disk space $usep% used" $ADMIN
  fi
done

I get the following errors:

Code:
./monitor_EMAIL.sh: line 12: [: /dev/mapper/VolGroup00-LogVol00: integer expression expected
./monitor_EMAIL.sh: line 12: [: /: integer expression expected

This the output I get with the "set -x" enabled:

Code:
[root@s-webservice scripts]# ./monitor_EMAIL.sh
./monitor_EMAIL.sh: line 12: [: /dev/mapper/VolGroup00-LogVol00: integer expression expected
./monitor_EMAIL.sh: line 12: [: /: integer expression expected
[root@host scripts]# vim monitor_EMAIL.sh
[root@host scripts]# ./monitor_EMAIL.sh
+ ADMIN=admin@mydomain.com
+ ALERT=10
+ df -l
+ grep -vE '^Filesystem|tmpfs|cdrom'
+ awk '{ print $5 " " $1 }'
+ read output
++ echo /dev/mapper/VolGroup00-LogVol00
++ awk '{ print $1}'
++ cut -d% -f1
+ usep=/dev/mapper/VolGroup00-LogVol00
++ echo /dev/mapper/VolGroup00-LogVol00
++ awk '{ print $2 }'
+ partition=
+ '[' /dev/mapper/VolGroup00-LogVol00 -ge 10 ']'
./monitor_EMAIL.sh: line 12: [: /dev/mapper/VolGroup00-LogVol00: integer expression expected
+ read output
++ echo / 149186740
++ awk '{ print $1}'
++ cut -d% -f1
+ usep=/
++ echo / 149186740
++ awk '{ print $2 }'
+ partition=149186740
+ '[' / -ge 10 ']'
./monitor_EMAIL.sh: line 12: [: /: integer expression expected
+ read output
++ echo 16% /dev/sda1
++ awk '{ print $1}'
++ cut -d% -f1
+ usep=16
++ echo 16% /dev/sda1
++ awk '{ print $2 }'
+ partition=/dev/sda1
+ '[' 16 -ge 10 ']'
++ hostname
++ hostname
++ date
+ echo 'Running out of space "/dev/sda1 16% used" on host as on Tue Jan  5 12:34:16 SAST 2010'
+ mail -s 'Alert:host almost out of disk space 16% used'
admin@mydomain.com
+ read output

I set the ALERT level low just to test the script.
This is on Fedora Core 5.
The same script works fine on all other versions like CentOS5, Redhat etc...

Last edited by pludi; 01-05-2010 at 08:02 AM.. Reason: code tags, please...
# 2  
Old 01-05-2010
It's probably that the path to your logical volumes is too long and df decides to move the information you're looking for to the next line. Of course that screws with the column numbering. Add the switch '-P' to df, and it should work fine.

Explanation: -P forces POSIX mode, which basically means that it should behave compatible to the other versions of df out there and put the information for each device on the same line. Not as readable, but better scriptable.
# 3  
Old 01-05-2010
Thanks a mil!!

It works.

Working script:

Code:
#!/bin/sh
#set -x
# set admin email so that you can get email
ADMIN="admin@mydomain.com"
# set alert level
ALERT=85
df -HP | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  #echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo "Running out of space \"$partition $usep% used\" on $(hostname) as on $(date)" |
     mail -s "Alert:$(hostname) almost out of disk space $usep% used" $ADMIN
  fi
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Getting error in bash script; expr $a + 1: integer expression expected

Hi, I am new to shell/bash script. I am trying to run below script #!/bin/bash a=0 b=10 if then echo "a is equal to be" else echo "a is not equal to be" fi MAX=10 while do echo $a a='expr $a + 1' done (1 Reply)
Discussion started by: Mallikgm
1 Replies

2. Shell Programming and Scripting

if condition error: integer expression expected

I am trying to run following condition with both variables having numeric values "1,2,3" if ;when i run it i get following error: $NEW_STATE: integer expression expected Please correct me where I'm doing wrong. I'm trying to check either New State is greater or Old state.... (0 Replies)
Discussion started by: kashif.live
0 Replies

3. UNIX for Dummies Questions & Answers

redirect for "[: : integer expression expected" error

Hi, I read in this forum that for "https://www.unix.com/shell-programming-scripting/156008-integer-expression-expected-regular-expression.html thanks! (7 Replies)
Discussion started by: Vijay81
7 Replies

4. UNIX for Dummies Questions & Answers

Integer expression expected error in script

When i run the following code i get an error that says Integer expression expected! How do i fix this? #!/bin/bash if ;then echo "wrong" exit 1 fi if ;then for i in /dev;do if ;then echo $i ls -l fi (4 Replies)
Discussion started by: kotsos13
4 Replies

5. Shell Programming and Scripting

Error: integer expression expected

root@server01 # df -h | grep /tmp | awk {'print $3}' 252M root@server01 # root@server01 # cat /usr/local/tmpchk.sh #!/bin/sh x=`df -h | grep /tmp | awk {'print $3}'` if ; then rm -fr /tmp/somefolder/ else echo "its small" (2 Replies)
Discussion started by: fed.linuxgossip
2 Replies

6. Shell Programming and Scripting

if script error: integer expression expected

Hi, i am making a simple program with a optional -t as the 3rd parameter. Submit course assignment -t dir In the script, i wrote: #!/bin/bash echo "this is course: ${1}" echo "this is assignment #: ${2}" echo "late? : ${3}" if then echo "this is late" fi but this gives me a :... (3 Replies)
Discussion started by: leonmerc
3 Replies

7. Shell Programming and Scripting

cshell integer expression from "0000" to "1999"

I have 2000 files named like "file-fr0000.log", "file-fr1999.log"... I wanna generate the file names automatically in the following c shell script: set fr = 0 while ($fr <= 1999) grep "ENERGY" file-fr$fr.log > data.dat @ fr = ( $fr + 1 ) end The above will generate file names... (3 Replies)
Discussion started by: rockytodd
3 Replies

8. Shell Programming and Scripting

Display Error [: : integer expression expected

i have lunix 5.4 i make script to tack the export from database 11g by oracle user the oracle sheel is /bin/bash when run this script display this error ./daily_xport_prod: line 36: the daily_xport_prod script #! /bin/sh # ORACLE_HOME=/u01/appl/oracle/product/11.2.0/db_1 export... (8 Replies)
Discussion started by: m_salah
8 Replies

9. Shell Programming and Scripting

error "integer expression expected" when selecting values

dear members, I am having some difficulties with an automation script that I am writing. We have equipments deployed over our network that generate status messages and I was trying an automated method to collect all information. I did a expect script that telnet all devices, logs, asks for... (4 Replies)
Discussion started by: jorlando
4 Replies

10. Shell Programming and Scripting

integer expression expected error

I'm a beginner so I might make beginner mistakes. I want to count the "#define" directives in every .C file I get the following errors: ./lab1.sh: line 5: ndef: command not found ./lab1.sh: line 6: #!/bin/sh for x in *. do ndef = 'grep -c \#define $x' if ; then ... (2 Replies)
Discussion started by: dark_knight
2 Replies
Login or Register to Ask a Question