The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
oracolo di connessione da script di shell DILEEP410 Shell scripting e di programmazione 4 07-01-2009 02:19 AM
Voglio chiamare una funzione di oracolo nel mio script di shell dineshr85 Shell scripting e di programmazione 4 10-16-2007 11:18 AM
Entrare Oracle o SQL da script di shell manirsendhil Shell scripting e di programmazione 2 04-09-2007 11:46 PM
Shell script per il caricamento dei dati in Oracle raghuraja_r Shell scripting e di programmazione 3 07-21-2006 10:00 AM
script di shell-oracolo problema di connessione nattynatty Shell scripting e di programmazione 4 08-14-2002 09:48 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 05-26-2009
rechever rechever is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 20
aiutare con Oracle script di shell

Sono sempre il seguente messaggio di errore in questo shl
Uso: cp [-fhipHILPU] [-r |-R] [-E (vigore | ignorare | warn)] [-] src obiettivo
o: cp [-fhipHILPU] [-r |-R] [-E (vigore | ignorare | warn)] [-] src1 ... srcN directory
Ho bisogno di inviare il file di log per il PRGMR_MAILING_LIST, ho cambiato per xxxx

Codice:
#! /bin/sh
#
# #Retrieves and processes CSS IDOC file, then e-mails appropriate users
#
# Created by xxxxxx, May 2009 
#
# Purpose: 
# Retrieves and processes CSS IDOC file, then e-mails appropriate users
# 
# Will be submitted from crontab. 
# 
# Directory Location:
# Database Home Dir/middlebury/shl
#
#--------------------------------------------------------------------------------
#
# Modifications:
# Date Author Description
# 
# .
#
#********************************************************************************
# Set the Database
SID="$1";
SIDQ="@${SID}";
ORAENV_ASK=NO; export ORAENV_ASK
PATH=/usr/bin:/bin:/etc:/usr/sbin:/usr/ccs/bin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.:/usr/lbin:$ORACLE_HOME/bin:/usr/local/bin
export PATH
ORACLE_SID=${SID}; export ORACLE_SID; . oraenv
#waiting for account
UID_F="xxxxx";
PW_F="Dxxxxxx";
# set job name
JOBNAME1="rypidoc_shl"
# set home directory path
MPATH=$BANNER_HOME;
SCRIPT_PATH="${MPATH}/xxxxx/plus/"
SQL_SCRIPT1="@rypidoc_loadcss_run.sql"
SQL_SCRIPT2="@rypidoc_process2_run.sql"
 
# Set Log File path and name
LOG_FILE_PATH="/u02/sct/banjobs/";
LOG_FILE_NAME=${JOBNAME}_$$.log;
LF1=${LOG_FILE_PATH}${LOG_FILE_NAME};
LF2=${LOG_FILE_PATH}${LOG_FILE_NAME};
MAILING_LIST="xxxxxi@xxxxx.edu";
PRGMR_MAILING_LIST="xxxxxi@xxxxx.edu"; 
#------------------------------------------------------------------------------
# write header lines to job log
echo "${JOBNAME}.shl" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Running Date & Time: " >>${LF1} 2>>${LF2}
date >>${LF1} 2>>${LF2}
echo "Database = ${SID}" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Starting script " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
##==============================================================================##
# Capture just the file sequence number 
fseqno=`print $i | sed 's/.*_//' | sed 's/.dat//' `
cd "${MPATH}/xxxxx/dat_files"
echo $i `date` > idochd1.lst
cp $i idoc.dat
DATA_FILE="${MPATH}/xxxxx/dat_files/3526*.dat ";
#Determine if there is a file to process
ls 3526*.dat > /dev/null 2>&1 
if [ $? != 0 ] 
then 
exit
fi
for i in 3526*.dat 
do
#=================================================================================#
# Change dir to where the sql scripts are
cd ${SCRIPT_PATH}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully changed dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not change dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script failed! Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
# Run sqlplus script to Load file into tables RYRIDOC_COVER, RYRIDOC_IMAGE, RYRIDOC_TAXDATA, RYRIDOC_W2
# pass the seqno as a paramater
sqlplus -s ${UID_F}/${PW_F}${SIDQ} ${SQL_SCRIPT1} $fseqno >>${LF1} ${UID_F} 2>>${LF2}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully executed the ${SQL_SCRIPT1} script\n" >>${LF1} 2>>${LF2}
egrep -i "ORA-|Aborting|Error" ${LF1} >/dev/null
error_status=$? 
if [ "$error_status" = "0" ]
then
cat ${LF1} | mailx -s "${JOBNAME1} script failed! " $PRGMR_MAILING_LIST 
echo "\nOracle error occurred. Email sent to ${PRGMR_MAILING_LIST}" >>${LF1} 2>>${LF2}
exit 1
fi 
egrep -i "00" ${DATA_FILE} >/dev/null
error_status2=$?
if [ "$error_status2" != "0" ]
then
echo "No data loaded today." >>${LF1} 2>>${LF2}
else
cat ${LF1} | mailx -s "${JOBNAME1} Loading Process Finish! Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}
fi
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not execute the ${SQL_SCRIPT1} script" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
#===================================================================================#
# Change dir to where the sql scripts are to run script2
cd ${SCRIPT_PATH}
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully changed dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not change dir for sql script." >>${LF1} 2>>${LF2}
echo "${SCRIPT_PATH} " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script2 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
# run scipt to do the processing
sqlplus ${UID_F}/${PW_F} ${SQL_SCRIPT2} >>${LF1} 2>>${LF2} 
if test $? -eq 0
then
echo " " >>${LF1} 2>>${LF2}
echo "Successfully executed the ${SQL_SCRIPT1} script\n" >>${LF1} 2>>${LF2}
egrep -i "ORA-|Aborting|Error" ${LF1} >/dev/null
error_status=$? 
if [ "$error_status" = "0" ]
then
cat ${LF1} | mailx -s "${JOBNAME1} script2 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nOracle error occurred. Email sent to ${PRGMR_MAILING_LIST}" >>${LF1} 2>>${LF2}
exit 1
fi 
egrep -i "00" ${DATA_FILE} >/dev/null
error_status2=$?
if [ "$error_status2" != "0" ]
then
echo "No data loaded today." >>${LF1} 2>>${LF2}
else
cat ${LF1} | mailx -s "${JOBNAME1} data loaded today !" Could not change dir for sql script" $PRGMR_MAILING_LIST 
echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}
fi
else
echo " " >>${LF1} 2>>${LF2}
echo "Error: could not execute the ${SQL_SCRIPT1} script" >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Script Ended and no updating done." >>${LF1} 2>>${LF2}
cat ${LF1} | mailx -s "${JOBNAME1} script1 failed!" Could not change dir for sql script" $PRGMR_MAILING_LIST 
exit 1
fi
#-----------------------------------
echo " " >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "End Date & Time: " >>${LF1} 2>>${LF2}
date >>${LF1} 2>>${LF2}
echo " " >>${LF1} 2>>${LF2}
echo "Shell Script Completed." >>${LF1} 2>>${LF2}
exit
Bit Assegnati / a carico rechever per questo post
Data Utente Commento Quantità
05-26-2009 Neo Aggiunto il codice tag per poster. -5.000
  #2 (permalink)  
Old 05-26-2009
cambridge cambridge is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 55
E mi sembra che il problema sia con questa linea:

Codice:
cp $i idoc.dat
Non hai impostato la 'i' variabile da questo punto, è vuota, quindi l'errore dal 'cp' comando - che aspetta due argomenti. Se non si imposta 'i' fino a poche righe dopo:

Codice:
for i in 3526*.dat
  #3 (permalink)  
Old 05-26-2009
rechever rechever is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 20
Scusa ancora non farlo, a questo nuovo materiale
quando ho l'shl come questo, ha funzionato, è solo quando si tenta di codice per inviare le email,

Codice:
#!/bin/ksh
#Retrieves and processes CSS IDOC file, then e-mails appropriate users

set -x

SID="$1";
SIDQ="@${SID}";

ORAENV_ASK=NO; export ORAENV_ASK
PATH=/usr/bin:/bin:/etc:/usr/sbin:/usr/ccs/bin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.:/usr/lbin:$ORACLE_HOME/bin:/usr/local/bin
export PATH
ORACLE_SID=${SID}; export ORACLE_SID; . oraenv

#waiting for account
UID_F="xxxxxx";
PW_F="xxxx";

# set job name
JOBNAME="rypidoc_shl"
# set home directory path
MPATH=$BANNER_HOME;

SCRIPT_PATH="${MPATH}/xxxxx/plus/"
SQL_SCRIPT1="@rypidoc_loadcss_run.sql"
SQL_SCRIPT2="@rypidoc_process2_run.sql"

#rm idochd1.lst htfn1.file htfn2.file  2> /dev/null

#Section One - Download from Website

#Section Two - Identify file(s) to process, process and rename

cd "${MPATH}/xxxxx/dat_files"

#Determine if there is a file to process
ls 3526*.dat > /dev/null 2>&1 

if [ $? != 0 ]                
then 
  exit
fi

for i in 3526*.dat              
do


# Capture just the file sequence number 
fseqno=`print $i | sed 's/.*_//' | sed 's/.dat//' `

cd "${MPATH}/xxxx/dat_files"
echo $i   `date` > idochd1.lst

cp $i idoc.dat

# Load file into tables RYRIDOC_COVER, RYRIDOC_IMAGE, RYRIDOC_TAXDATA, RYRIDOC_W2
##cd $SOFTPATH/script
# Change dir to where the sql scripts are
cd ${SCRIPT_PATH}
sqlplus -s ${UID_F}/${PW_F}${SIDQ} ${SQL_SCRIPT1}  $fseqno  >>${LF1} ${UID_F} 2>>${LF2}

# Process 
##cd $SOFTPATH/script
###sqlplus / @$SOFTPATH/script/rypidoc_process2_run.sql
cd ${SCRIPT_PATH}
sqlplus ${UID_F}/${PW_F} ${SQL_SCRIPT2}  >>${LF1} 2>>${LF2}

##cd $SOFTPATH/data/finaid/idoc
cd "${MPATH}/xxxxx/dat_files"

mv $i $i.processed

#Notify User
##cd $SOFTPATH/bin
##asysmail idoc.mail "CSS IDOC file received and processed" $SOFTPATH/log/rypidoc_process2.log
 echo "\nEmail sent to ${MAILING_LIST} Loading Process Finish." >>${LF1} 2>>${LF2}

# Find the last error file for each type
tfn1=$( ls -1t ${MPATH}/xxxxx/dat_files/idoc_nomatch* | grep -v BAN1bat| head -1 )

#Determine if tfn1 has any records-if so, send

count=`cat $tfn1 | wc -l `

if [ $count != 0 ]
then
cat ${MPATH}/xxxxx/dat_files/idochd1.lst $tfn1 > ${MPATH}/xxxx/dat_files/htfn1.file
##asysmail idoc.mail "CSS IDOC-No Match File" $SOFTPATH/data/finaid/idoc/htfn1.file
fi

tfn2=$( ls -1t $${MPATH}/xxxx/dat_files/idoc_error* | grep -v BAN1bat| head -1 )

#Determine if tfn2 has any records-if so, send

count=`cat $tfn2 | wc -l `

if [ $count != 0 ]
then
cat $${MPATH}/xxxx/dat_files/idochd1.lst $tfn2 > $S${MPATH}/xxxxx/dat_files/htfn2.file
##cd $SOFTPATH/bin
###asysmail idoc.mail "CSS IDOC-Error File" $SOFTPATH/data/finaid/idoc/htfn2.file
fi

done

exit
Bit Assegnati / a carico rechever per questo post
Data Utente Commento Quantità
05-26-2009 Neo Aggiunto il codice tag per poster. -5.000
  #4 (permalink)  
Old 05-28-2009
cambridge cambridge is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 55
Citazione:
Scusa ancora non farlo, a questo nuovo materiale
quando ho l'shl come questo, ha funzionato, è solo quando si tenta di codice per inviare le email,
Codice:
echo $i `date` > idochd1.lst
cp $i idoc.dat
.....
for i in 3526*.dat 
do
...
done
... non funziona perché $ i non è impostata quando si è al di fuori del per loop.

Codice:
for i in 3526*.dat              
do
...
echo $i   `date` > idochd1.lst
cp $i idoc.dat
...
done
... perché le opere dei tuoi punti di riferimento per $ i venuto all'interno del per loop (tra le fare e fatto).

Questa è roba di base della shell, ti suggerisco di acquistare un libro su UNIX shell scripting e di lavoro attraverso alcuni esempi.
  #5 (permalink)  
Old 05-28-2009
devtakh devtakh is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Località: Bangalore
Interventi: 514
Una variabile deve essere impostato prima di poter utilizzare per fare qualche operazione che doen't aspettarsi una stringa null
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 01:02 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0