Ich bin recht neu auf Unix (Sun OS) Scripting mit ksh, und ich könnte ein wenig Hilfe zur Fehlerbehebung mein Skript. Wenn ich es starten, erhalte ich die Fehlermeldung ", wenn unerwartete" auf die Funktion setYear. Wenn ich kommentieren Sie die Funktion setYear, erhalte ich die Fehlermeldung "für unerwartete" auf die Funktion sendEmails. Dies führt mich zu der Annahme, dass der Fehler liegt vor den beiden Funktionen, aber ich kann sie nicht finden. Ich hoffe, dass einer von euch könnte mir-zu-Punkt in die richtige Richtung. Vielen Dank im Voraus für die Hilfe.
Code:
#!/bin/ksh
# Author: Mark Harley, ISDC Halifax
# Contact: m.harley@cgi.com
# Created: 01 March 2005
# Updated: 04 March 2005
# Purpose: This is a test of the automated monthly eBCCS log file backup.
# The actual copies of this file are on the following servers:
dmocnu.on.bell.ca, dmocnt.on.bell.ca, dc1c3m.qc.bell.ca
# The following files need to be backed up each month (usually on the 7th):
# Nohup.out
# PHLog.txt
# PSQTLog.txt
# Response-Log.txt
# Access.log
# Weblogic.log
# ServiceAddressQueryResponseLog.txt
# this sets the email addresses that are sent the temp file containing the command outputs
email_addresses="tina.naugler@cgi.com m.harley@cgi.com pamela.green@cgi.com"
# this puts the instance names in an array
set -A instance
instance[1]="ont0"
instance[2]="qbc1"
instance[3]="jdbc0"
instance[4]="admin1"
# this puts the file names in an array
set -A fName
fName[1]="nohup.out"
fName[2]="PHLog.txt"
fName[3]="PSQTlog.txt"
fName[4]="response-Log.txt"
fName[5]="access.log"
fName[6]="wl-domain.log"
fName[7]="weblogic.log"
fName[8]="ServiceAddressQueryResponse.Log.txt"
# these variables will contain the system date to append to the file name
# the DATEday variable can be altered for mid-month backups (but it MUST be reset to the 7th
after backup completed)
integer DATEday=7
integer DATEmonth=$(( \( "`date +%m`" + 12 - 1 \) % 12 ))
integer DATEyear="`date +%y`"
# filler variables
zero="0"
star="*"
underscore="_"
# if the current month is January, then the backup will be for December of the previous year
function setYear{
if [ ${DATEmonth} == 1 ]
then
DATEyear=${DATEyear}-1
fi
}
# send the temp file in the body of an email to the email addresses specified above
function sendEmails{
for email_address in $email_addresses
do
/bin/mail -s "${DATEday}-${DATEmonth}-${DATEyear} Log File Backup" $email_address <
/tmp/ebccsbkup.tmp
done
}
# backup files and compress them, then move them to the backup directory for the instance
# the results of the executed commands is written to a temp file
function backupFiles{
for ((y=0; y<=${#fName[*]}; y++))
do
if [ ${fName[y]} = "access.log" ] || [ ${fName[y]} = "weblogic.log" ]; then
if [ -f "access.log" ] || [ -f "weblogic.log" ]; then
tar cvf bk${fName[y]}.${DATEyear}${DATEmonth}.tar ${fName[y]}.${zero}${star} >>
/tmp/ebccsbkup.tmp
# rm ${fName[y]}${zero}${star}
mv bk${fName[y]}.${DATEyear}$DATEmonth.tar
$fName[y].${DATEyear}${DATEmonth}${underscore}${DATEday}.tar >> /tmp/ebccsbkup.tmp
gzip ${fName[y]}.${DATEyear}${DATEmonth}${underscore}${DATEday}.tar >>
/tmp/ebccsbkup.tmp
else
echo "${fName[y]} does not exist in ${instance[x]}" >> /tmp/ebccsbkup.tmp
fi
elif [${fName[y]} = "wl-domain.log"]; then
if [ -f "wl-domain.log" ]; then
tar cvf ${fName[y]}.${DATEyear}${DATEmonth}${underscore}${DATEday}.tar ${fName[y]}
>> /tmp/ebccsbkup.tmp
# cp /dev/null/$fName[y] >> /tmp/ebccsbkup.tmp
gzip ${fName[y]}.${DATEyear}${DATEmonth}${underscore}${DATEday}.tar >>
/tmp/ebccsbkup.tmp
else
echo "${fName[y]} does not exist in ${instance[x]}" >> /tmp/ebccsbkup.tmp
fi
else
if [ -f $fName[y]} ]; then
tar cvf bk${fName[y]}.${DATEyear}$DATEmonth.tar
${fName[y]}.${DATEyear}$DATEmonth${star} >> /tmp/ebccsbkup.tmp
# rm ${fName[y]}.${DATEyear}${DATEmonth}${star}
mv bk${fName[y]}.${DATEyear}$DATEmonth.tar
${fName[y]}.${DATEyear}${DATEmonth}${underscore}${DATEday}.tar >> /tmp/ebccsbkup.
tmp
gzip ${fName[y]}.${DATEyear}${DATEmonth}${underscore}${DATEday}.tar >>
/tmp/ebccsbkup.tmp
else
echo "${fName[y]} does not exist in ${instance[x]}" >> /tmp/ebccsbkup.tmp
fi
fi
echo "\n" >> /tmp/ebccsbkup.tmp
done
mv *.tar.gz /u01/${instance[x]}/ >> /tmp/ebccsbkup.tmp
}
# loop through the instances and call function backupFiles
function setInstance{
# this outputs an initial statement to the temp file allowing all subsequent outputs to be
rewrite statements
echo "eBCCS Monthly Log Backup ${DATEday}-${DATEmonth}-${DATEyear}" > /tmp/ebccsbkup.temp
for ((x=0; x<=${#instance[*]}; x++))
do
echo "${instance[x]} testing..."
echo "\n" >> /tmp/ebccsbkup.tmp
echo "${instance[x]} Log Files" >> /tmp/ebccsbkup.tmp
cd /opt/bea/${instance[x]}/wls6.1/config/bles/logs
backupFiles
done
sendEmails
}
setYear
setInstance