| FTP concurrent program
Many a times there is a need to
do a reverse interface between Oracle application and legacy system.
Also data extracts from
1. It takes an data extract file
( that can be a spooled data file generated by sql script) from Oracle
Application.
The program is kept in the $CUSTOM_TOP/bin directory. Note : The first four parameter
$1, $2,$3, $4 are reserved for processing by Oracle Applications and the
parameter passed by the application is trapped in $5. For parameters greater
than $9 you have to use awk / print commands.
# PROGRAM NAME : FTP concurrent program
# AUTHOR : A Shrivastava
# DESCRIPTION : This Script FTPs datafile to Mainframe.
# CHANGE HISTORY:
# -----------------------------------------------------------------
# DATE RESON FOR CORRECTION
# -----------------------------------------------------------------
# 14-FEB-2001 This script ftps data
# extract. The data FTP is in ascii.
# The file is put onto two serves depending
# upon the parameters.
#
# ******************************************************************
FTP_Files() {
### Log Input Parameters assigned to Program Variables ###
echo " " > ${FTP_LOG}
echo "*********************************************" >> ${FTP_LOG}
echo "******* LOG FILE DETAILS BEGIN HERE *******" >> ${FTP_LOG}
echo "*********************************************" >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
echo "******* FTP FILE ******* " >> ${FTP_LOG}
echo "*** Input Parameters ***" >> ${FTP_LOG}
echo "${REMOTEserver}" >> ${FTP_LOG}
echo "${UNAME}" >> ${FTP_LOG}
echo "${PASS}" >> ${FTP_LOG}
echo "${COMMND}" >> ${FTP_LOG}
echo "${HOSTpath}" >> ${FTP_LOG}
echo "${REMOTEpath}" >> ${FTP_LOG}
echo "${TRANSfile}" >> ${FTP_LOG}
echo "*********** End **********" >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
### Test the existence of the Remote Server ###
ping ${REMOTEserver} >> ${FTP_LOG}
TESTval=${?}
if [ ${TESTval} -ne 0 ]
then
echo " Remote File Server Unavailable -${REMOTEserver}"
echo "Remote File Server Unavailable - ${REMOTEserver}"
echo "File Transfer Failed " >> ${FTP_LOG}
echo "Remote File Server Unavailable - ${REMOTEserver}" >> ${FTP_LOG}
Return_func 1
fi
COMMNDline="put $HOSTpath/${TRANSfile}"*" "DATAOUTPUT""
echo "${COMMNDline}" >> ${FTP_LOG}
# ### Log FTP Formated Commands ###
echo " " >> ${FTP_LOG}
echo "*** FTP Commands ***" >> ${FTP_LOG}
echo "open ${REMOTEserver}" >> ${FTP_LOG}
echo "user ${UNAME} ${PASS}" >> ${FTP_LOG}
echo "lcd .." >> ${FTP_LOG}
echo "lcd ${HOSTpath}" >> ${FTP_LOG}
echo "cd ${REMOTEpath}" >> ${FTP_LOG}
echo "ascii" >> ${FTP_LOG}
echo "quote site space\(10,10\) lrecl\(618\) blk\(27810\)" >> ${FTP_LOG}
echo "${COMMNDline}" >> ${FTP_LOG}
echo "close" >> ${FTP_LOG}
echo "quit" >> ${FTP_LOG}
echo "******** End ******* " >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
### Execute FTP Formated Commands ###
if (echo "open ${REMOTEserver}"
echo "user ${UNAME} ${PASS}"
echo "lcd ${HOSTpath}"
echo "cd .."
echo "cd ${REMOTEpath}"
echo "ascii"
echo "quote site space\(10,10\) lrecl\(618\) blk\(27810\)"
echo "${COMMNDline}"
echo "close"
echo "quit"
) | /usr/bin/ftp -inv 2>&1 \
| tee -a ${FTP_LOG} \
| grep "^226 " > /dev/null
then
echo "File Transfer Successful "
rm $HOSTpath/${TRANSfile}*
else
echo "File Transfer Failed"
echo "File Transfer Failed" >> ${FTP_LOG}
Return_func 1
fi
}
FTP_Files_To_LAN() {
### Log Input Parameters assigned to Program Variables for LAN xfer ###
echo " " > ${FTP_LOG}
echo "*********************************************" >> ${FTP_LOG}
echo "*********************************************" >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
echo "******* FTP FILE to LAN ******* " >> ${FTP_LOG}
echo "*** Input Parameters ***" >> ${FTP_LOG}
echo "${LANREMOTEserver}" >> ${FTP_LOG}
echo "${LANUNAME}" >> ${FTP_LOG}
echo "${LANPASS}" >> ${FTP_LOG}
echo "${LANCOMMND}" >> ${FTP_LOG}
echo "${LANREMOTEpath}" >> ${FTP_LOG}
echo "*********** End **********" >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
### Test the existence of the Remote Server ###
ping ${LANREMOTEserver} >> ${FTP_LOG}
LANTESTval=${?}
if [ ${LANTESTval} -ne 0 ]
then
echo " Remote LAN File Server Unavailable -${LANREMOTEserver}"
echo "Remote LAN File Server Unavailable - ${LANREMOTEserver}"
echo "File Transfer Failed " >> ${FTP_LOG}
echo "Remote LAN File Server Unavailable - ${LANREMOTEserver}" >> ${FTP_LOG}
Return_func 1
fi
LANCOMMNDline="put $HOSTpath/${TRANSfile}"*" "DATAOUTPUT""
echo "${LANCOMMNDline}" >> ${FTP_LOG}
# ### Log FTP Formated Commands ###
echo " " >> ${FTP_LOG}
echo "*** FTP Commands ***" >> ${FTP_LOG}
echo "open ${LANREMOTEserver}" >> ${FTP_LOG}
echo "user ${LANUNAME} ${LANPASS}" >> ${FTP_LOG}
echo "lcd .." >> ${FTP_LOG}
echo "lcd ${HOSTpath}" >> ${FTP_LOG}
echo "cd ${LANREMOTEpath}" >> ${FTP_LOG}
echo "ascii" >> ${FTP_LOG}
echo "${LANCOMMNDline}" >> ${FTP_LOG}
echo "close" >> ${FTP_LOG}
echo "quit" >> ${FTP_LOG}
echo "******** End ******* " >> ${FTP_LOG}
echo " " >> ${FTP_LOG}
### Execute FTP Formatted Commands for LAN###
if (echo "open ${LANREMOTEserver}"
echo "user ${LANUNAME} ${LANPASS}"
echo "lcd ${HOSTpath}"
echo "cd .."
echo "cd ${LANREMOTEpath}"
echo "ascii"
echo "${LANCOMMNDline}"
echo "close"
echo "quit"
) | /usr/bin/ftp -inv 2>&1 \
| tee -a ${FTP_LOG} \
| grep "^226 " > /dev/null
then
echo "File Transfer to LAN Successful "
else
echo "File Transfer to LAN Failed"
echo "File Transfer to LAN Failed" >> ${FTP_LOG}
Return_func 1
fi
}
Archive_File () {
cp ${1} ${1}.${FLEXT} >> ${FTP_LOG}
File="${1}.${FLEXT}"
echo $1 >> ${FTP_LOG}
echo $File >> ${FTP_LOG}
compress ${File}
if [ $? -eq "0" ]
then
ar -rvV ${ARCHIVE_FILE} ${File}.Z >> ${FTP_LOG}
if [ $? -eq "0" ]
then
rm -f ${File}.Z
echo "Data file Archived succesfully"
else
echo "Could Not Archive the file"
fi
else
ar -rvV ${ARCHIVE_FILE} ${File} >> ${FTP_LOG}
if [ $? -eq "0" ]
then
rm -f ${File}
echo "Data file Archived succesfully"
else
echo "Could Not Archive the file"
fi
fi
# List all the files archived into $ARCHIVE_FILE
echo "******* List of all the Archived Files in ${ARCHIVE_FILE} *******" >> ${FTP_LOG}
ar -tvV ${ARCHIVE_FILE} >> ${FTP_LOG}
}
Return_func() {
RTN_CODE=$1
cat ${FTP_LOG}
case ${RTN_CODE} in
0)
exit ${RTN_CODE}
;;
*)
exit ${RTN_CODE}
;;
esac
}
# Main Program
# Concurrent Program Parameters
# The $1 to $4 parameters are reserved for the concurrent program. The rest of the
# param i.e. $5 is the first defined param in the Concurrent Program params and so on.
# The username, password, servername, LAN servername all carry value in default parameters
# in the concurrent programs parameters.
FLEXT=`date +%m%d%y%H%M%S`
CUST_DIR="${NA_TOP}"
FTP_LOG="${CUST_DIR}/log/.ftp_file_atdis.log"
ARCHIVE_DIR="${CUST_DIR}/outbound/archive"
echo 'Arguments:'
echo Remote Server Name : $5
echo Username : $6
echo Password : $7
echo DSN Prefix : $8
echo Host File Path : $9
TRANSfile=`echo $* | awk '{print $10}'`
echo File Prefix : ${TRANSfile}
# Lan Input
echo "LAN INPUT"
echo LAN Remote Server Name : `echo $* | awk '{print $11}'`
echo LAN Username : `echo $* | awk '{print $12}'`
echo LAN Password : `echo $* | awk '{print $13}'`
echo LAN Remote Path : `echo $* | awk '{print $14}'`
ARCHIVE_FILE="${ARCHIVE_DIR}/PHRATDIS.ar"
DATA_FILENAME=`echo ${CUST_DIR}/outbound/${TRANSfile}*`
REMOTEserver="`echo ${5} | sed 's/\"//g'`"
UNAME="`echo ${6} | sed 's/\"//g'`"
PASS="`echo ${7} | sed 's/\"//g'`"
HOSTpath="`echo ${9} | sed 's/\"//g'`"
REMOTEpath="`echo ${8} | sed 's/\"//g'`"
COMMND="put"
echo Check log for output >> $APPLCSF/$APPLOUT/$3.$4
#Lan Params
# The variables on the command line need special treatment after $9.
#Instead of getting the value of the variable directly you need to print it with awk.
LANREMOTEserver=`echo $* | awk '{print $11}'`
LANUNAME=`echo $* | awk '{print $12}'`
LANPASS=`echo $* | awk '{print $13}'`
LANREMOTEpath=`echo $* | awk '{print $14}'`
LANCOMMND="put"
# Main Program Logic
Archive_File ${DATA_FILENAME}
FTP_Files_To_LAN
FTP_Files
Return_func 0
# EXIT
Have a Oracle Question
Oracle Books
Oracle Application
Oracle Home
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
|