Syntax error near unexpected token `('

Guys ,

This is an output of my script errored out for "Syntax error near unexpected token `(' " Can someone tell me whats wrong with my script.
Below is my original script pasted.


#!/bin/bash
Script Creation Date 01/21/2010
Author baraghun

##****************************************************************
##  **********  FUNCTION USAGE  ***********
##****************************************************************


Script name without path

BASENAME=`basename $0`

Script Location

LOCATION=/home/myHome

The INFILE is going to use during the SSH

INFILE=${HOME}/config/inFile.txt

The changes will write to OUTFILE

OUTFILE=${HOME}/out/outFile

Functional Usage

usage() {
        echo
        echo "USAGE"
        echo "   "`basename $0`" <device> <disable|enable> "
        echo
        exit
        }
        echo
        echo    
        echo " Preparing to service at request to Device ${1} in Question . "
        echo
        echo

Firewall() {

      #Local Variables
      #
       local STATE="$1"
      #

cat << EOF > $INFILE
admin
psswd
config
switch Services
http Firewall
admin-state ${STATE}
show
exit
exit
exit
EOF
}

#
#Validate the device name
#
echo $1 | egrep "^(cmox|pmox|tmox)[0-9][0-9][0-9][0-9]\-ra$" > /dev/null 2>&1
if [ $? -ne 0 ]
then
   echo
   echo "Node doesn't exist"
   echo
else
   echo
   echo "Node does exist"
   echo
fi

DPDEVICE="$1"

# Check the  parameters
#

# Check the input parameters
#
case $2 in
         disable)
                Firewall disabled
                echo " Disabling the Device in few seconds "
        ;;
         enable)
                Firewall enabled
                echo " Enabling the Device in few seconds "
        ;;
        *)
                usage
        ;;
esac

#
# Apply the changes
#
DATE=`date`
ssh -T ${DPDEVICE} < $INFILE >> $OUTFILE
if [$? -eq 0]
then
   echo " Report Logging . . "
   mv -if $OUTFILE $OUTFILE(date +%y%m%d-%H%M%S).${DPDEVICE}
else
   echo " Conection error.Please Validate the NODE name"
fi

#
#
chmod 755 ${OUTFILE}

The Output of the script is something like this , given below

 

$ ./routing.sh cmox2222-ra enable

**********************************************************************
 Preparing to service at request to Device cmox2222-ra in Question . . .
**********************************************************************


Node does exist

 Enabling the Device in few seconds
./routing.sh: line 107: syntax error near unexpected token `('
./routing.sh: line 107: `   mv -if $OUTFILE $OUTFILE(date +%y%m%d-%H%M%S).${DPDEVICE}' 

Just Because of the above error the log file is not getting created & also not in the desired format. Can some one suggest me .. what needs to be changed or manipulated in the above script

The line should read

mv -if $OUTFILE $OUTFILE$(date +%y%m%d-%H%M%S).${DPDEVICE}

You have to insert a '$' before the '('.

Thanks a lot it worked , but with

chmod: WARNING: can't access /home/MyHome/out/outFile &

I also want one of the String from outFile which shows the current status of the server should be echoed .. as an output statement .. can you suggest me .

You just rename $OUTFILE to $OUTFILE$(date +%y%m%d-%H%M%S).${DPDEVICE}, so ${OUTFILE} does no longer exist when to try to change it's access mode. You have to save the new name in a variable for later use, because 'date' might give a different timestamp when you rerun 'date'.

NEWFILE=$OUTFILE$(date +%y%m%d-%H%M%S).${DPDEVICE}
mv -if $OUTFILE $NEWFILE
...
chmod 755 $NEWFILE

To display a certain line from the outfile, you can use 'grep' or 'awk' for example.

---------- Post updated at 09:06 ---------- Previous update was at 09:03 ----------

Just recongnized, that NEWFILE does not get set in the else-part just before the chmod. So you have to set NEWFILE=$OUTFILE in the else-part or - if it is OK to run 'chmod' only in the then-block - move 'chmod' just before the 'mv' command:

chmod 755 $OUTFILE
mv -if $OUTFILE $OUTFILE$(date +%y%m%d-%H%M%S).${DPDEVICE}

Now also im seeing the same issue with different timestamp on the file name even after i changed the parameter.

DATE=`date`
NEWFILE=$OUTFILE$(date +%y%m%d-%H%M%S).${DPDEVICE}.${2}
ssh -T ${DPDEVICE} < $INFILE >> $OUTFILE
if [ $? -eq 0 ]
then
   echo " Report Logging . . "
   chmod 777 $NEWFILE
   mv -if $OUTFILE $NEWFILE
else
   echo " Conection error.Please Validate the NODE name"
fi

[output]

$ ./routing.sh tmox6324-ra enable

***********************************************************
Preparing to service at request to Device tmox6324-ra in Question . . .
***********************************************************

Node does exist

Enabling the Device in few seconds
Report Logging . .
chmod: WARNING: can't access /home/MyHome/out/outFile100203-023547.tmox6324-ra.enable

[/output]

Created Output Files

-rw-r--r-- 1 1957 Feb 3 02:29 outFile100203-022952.tmox6324-ra.enable
-rw-r--r-- 1 1958 Feb 3 02:31 outFile100203-023128.tmox6324-ra.disable
-rw-r--r-- 1 1957 Feb 3 02:31 outFile100203-023155.tmox6324-ra.enable

Ah, I see. I think, I was not clear about this. You have to swap chmod and mv like:

   mv -if $OUTFILE $NEWFILE
   chmod 777 $NEWFILE

That should do the trick.

Oh yeah !! it worked .. gr8 .. but new challlenge for me is to pull the string
{ admin-state enabled/disabled } from the latest created outFile . This string line count is 12. can you give me any such syntax to insert ..this in to my output window .

This is untested, but should give you an idea, how to do this:

awk '$1 == "admin-state" { print $2 }' `ls outfile* | tail -1`