Shell script not working on Solaris 10

Hi

Iam running the below scripts on one file on solaris 10 but its giving error.

code

sh BNGREPORT1.sh z1

code in file BNGREPORT1.sh is given below.

root@blr-svr-oclan-01 # more BNGREPORT1.sh
#!/bin/sh
#cd /surender
FILE="bng_total_report_$(date +%Y%m%d_%H%M%S)"
echo HOST_NAME "|" IP  "|" FREE_MEMORY "|" INT_DISK_UTILIZATION "|" SUB_ACT-SESSIONS "|" CPU_UTIL "|" ENT_DISK_UTILIZATION
echo HOST_NAME "|" IP  "|" FREE_MEMORY "|" INT_DISK_UTILIZATION "|" SUB_ACT-SESSIONS "|" CPU_UTIL "|" ENT_DISK_UTILIZATION  >> $FILE
.xls
cat $1 | egrep "IP IS|cont bsnl.in|PPPoE|CPU % usage|Memory:|Internal|External" > bngreport.tmp
#cat $1 | egrep "IP IS|cont bsnl.in|PPPoE|Total |Memory:|Internal|External" > bngreport.tmp
while read line
do
if [ "`echo  $line | grep IP`" ]
then
IP=`echo $line | cut -d" " -f3`
continue
elif [ "`echo $line | grep "cont bsnl.in"`" ]
then
HOST_NAME=`echo $line | cut -c8-25`
continue
elif [ "`echo $line | grep PPPoE`" ]
then
sub=`echo $line | cut -c9-13`
continue
elif [ "`echo $line | grep "CPU % usage"`" ]
#elif [ "`echo $line | grep "Total"`" ]
then
CPU_UTIL=`echo $line | cut -d"," -f5 | cut -c2-6`
continue
elif [ "`echo $line | grep Memory:`" ]
then
mem=`echo $line | cut -c46-53`
continue
elif [ "`echo $line | grep Internal`" ]
then
disk_int=`echo $line | cut -c30-34`
continue
elif [ "`echo $line | grep External`" ]
then
disk_ent=`echo $line | cut -c30-33`
echo $HOST_NAME "|" $IP  "|" $mem "|" $disk_int "|" $sub "|" $CPU_UTIL "|" $disk_ent
echo $HOST_NAME "|" $IP  "|" $mem "|" $disk_int "|" $sub "|" $CPU_UTIL "|" $disk_ent  >> $FILE.xls
continue
fi
done<bngreport.tmp
#mv /root/$FILE.xls /surender/reports

source file z1 is below

IP IS 10.238.52.65
spawn telnet 10.238.52.65
Trying 10.238.52.65...
Connected to 10.238.52.65.
Escape character is '^]'.

pun-ras-bng-mhs-01

[local]pun-ras-bng-mhs-01#cont bsnl.in
[bsnl.in]pun-ras-bng-mhs-01#show sub sum all 
--------------------------------------------------------------------------------
Total=12031

Type            Authenticating          Active          Disconnecting
PPP                          0               0                      0
PPPoE                        4           12027                      4
DOT1Q                        0               0                      0
CLIPs                        0               0                      0
ATM-B1483                    0               0                      0
ATM-R1483                    0               0                      0
Mobile-IP                    0               0                      0
[bsnl.in]pun-ras-bng-mhs-01#show process cpu | grep CPU
Total system CPU % usage (5s, 1m, 5m): 76.90, 58.01, 54.93
[bsnl.in]pun-ras-bng-mhs-01#show process aaad detail | grep CPU 
%CPU                : 11.38%
[bsnl.in]pun-ras-bng-mhs-01#show memory 
Memory: Total 922428k, Used 684532k, Free 195648k, Reserved 24k
[bsnl.in]pun-ras-bng-mhs-01#show disk
Location  512-blocks     Used    Avail Capacity  Mounted on
Internal      968158   536932   382818    58%    /
External      922558   235166   641264    26%    /md
[bsnl.in]pun-ras-bng-mhs-01#exit
Connection to 10.238.52.65 closed by foreign host.


IP IS 10.238.54.1
spawn telnet 10.238.54.1
Trying 10.238.54.1...
Connected to 10.238.54.1.
Escape character is '^]'.



[local]enk-ras-bng-cse-01#cont bsnl.in
[bsnl.in]enk-ras-bng-cse-01#show sub sum all 
--------------------------------------------------------------------------------
Total=16820

Type            Authenticating          Active          Disconnecting
PPP                          0               0                      0
PPPoE                        8           16812                      3
DOT1Q                        0               0                      0
CLIPs                        0               0                      0
ATM-B1483                    0               0                      0
ATM-R1483                    0               0                      0
Mobile-IP                    0               0                      0
[bsnl.in]enk-ras-bng-cse-01#show process cpu | grep CPU
Total system CPU % usage (5s, 1m, 5m): 66.65, 70.36, 69.82
[bsnl.in]enk-ras-bng-cse-01#show process aaad detail | grep CPU 
%CPU                : 13.62%
[bsnl.in]enk-ras-bng-cse-01#show memory 
Memory: Total 922428k, Used 685872k, Free 190908k, Reserved 24k
[bsnl.in]enk-ras-bng-cse-01#show disk
Location  512-blocks     Used    Avail Capacity  Mounted on
Internal      968158   571876   347874    62%    /
External      922558   656022   220408    74%    /md
[bsnl.in]enk-ras-bng-cse-01#exit
Connection to 10.238.54.1 closed by foreign host.
Connection to 10.238.54.1 closed by foreign host.

output coming as below

 root@blr-svr-oclan-01 # sh BNGREPORT1.sh z1
HOST_NAME | IP | FREE_MEMORY | INT_DISK_UTILIZATION | SUB_ACT-SESSIONS | CPU_UTIL | ENT_DISK_UTILIZATION
BNGREPORT1.sh: : cannot execute
BNGREPORT1.sh: test: argument expected
root@blr-svr-oclan-01 # 

can any body help.

tnx in advance.

You perform this form of test a number of times, however if the grep fails what happens?

if [ "`echo  $line | grep IP`" ]

perhaps you should perform you test something like the following under bash:

if [ ! -z "`echo  $line | grep IP`"  ] ;then 

Hi

error coming while executing the code

root@blr-svr-oclan-01 #  sh bngreports.sh z1
HOST_NAME | IP | FREE_MEMORY | INT_DISK_UTILIZATION | SUB_ACT-SESSIONS | CPU_UTIL | ENT_DISK_UTILIZATION
bngreports.sh: [!: not found
bngreports.sh: : cannot execute
bngreports.sh: test: argument expected
root@blr-svr-oclan-01 #

I would highly recommend to intend your code for better readability!

Try this modified code and see if it works:

#!/bin/sh
#cd /surender

FILE="bng_total_report_$( date +%Y%m%d_%H%M%S )"
echo "HOST_NAME | IP  | FREE_MEMORY | INT_DISK_UTILIZATION | SUB_ACT-SESSIONS | CPU_UTIL | ENT_DISK_UTILIZATION" | tee ${FILE}.xls

egrep "IP IS|cont bsnl.in|PPPoE|CPU % usage|Memory:|Internal|External" $1 > bngreport.tmp

while read line
do
        if grep -q "IP" "$line"
        then
                IP=$( echo "$line" | cut -d" " -f3 )
                continue;
        elif grep -q "cont bsnl.in" "$line"
        then
                HOST_NAME=$( echo "$line" | cut -c8-25 )
                continue;
        elif grep -q "PPPoE" "$line"
        then
                sub=$( echo "$line" | cut -c9-13 )
                continue;
        elif grep -q "CPU % usage" "$line"
        then
                CPU_UTIL=$( echo "$line" | cut -d"," -f5 | cut -c2-6 )
                continue;
        elif grep -q "Memory:" "$line"
        then
                mem=$( echo "$line" | cut -c46-53 )
                continue;
        elif grep -q "Internal" "$line"
        then
                disk_int=$( echo "$line" | cut -c30-34 )
                continue;
        elif grep -q "External" "$line"
        then
                disk_ent=$( echo "$line" | cut -c30-33 )
                echo "$HOST_NAME | $IP  | $mem | $disk_int | $sub | $CPU_UTIL | $disk_ent" | tee ${FILE}.xls
                continue;
        fi
done < bngreport.tmp

Avoid using back-ticks in script.

Set xtrace and verbose and run it if any error found:

#!/bin/sh -xv

I left a space between the test and teh negation ie: [ ! not [!