次の予想されるスクリプトを作成しました。このスクリプトの出力を記録する必要があります。
SOURCE_FILE=`ls -l *.txt --time-style=+%D | grep ${DT} | grep -v '^d' | awk '{print $NF}' `
if [ -n "${SOURCE_FILE}" ]
then
cp -p ${SOURCE_FILE} ${T_FILES}
/usr/bin/expect<<EOD
set timeout 60
spawn sftp $ES_SFTP_USER@$ES_SFTP_HOST_NAME:$R_LOCATION
expect "*?assword:"
send "$password\r"
expect "sftp>"
send "put /opt/AppServer/ES_TEST/todays_report/*.txt\r"
expect "sftp>"
send "bye\r"
expect EOD
EOD
else
echo "No Files to copy" >> ${LOGFILE}
fi
Expectコマンドの出力を記録する必要があります${LOGFILE}
。どうすればいいですか?
以下を追加しようとしましたが、動作しません。何ができますか?
/usr/bin/expect<<EOD >> ${LOGFILE} 2>&1
set timeout 60
spawn sftp $ES_SFTP_USER@$ES_SFTP_HOST_NAME:$R_LOCATION
expect "*?assword:"
send "$password\r"
expect "sftp>"
send "put /opt/AppServer/ES_TEST/todays_report/*.txt\r"
expect "sftp>"
send "bye\r"
expect EOD
EOD
答え1
LOGFILEが範囲外のようです。エクスポートしましたか?環境変数を参照してください。
変数を環境にエクスポートするか、パラメータとして渡す必要があります。
たとえば、プログラムが呼び出され、次のことがabc
行われるとします。
LOGFILE=./logdir/logfile
export LOGFILE
./abc
または
LOGFILE=./logdir/logfile ./abc
またはパラメータとして渡されます。
./abc "./logdir/logfile"
そしてプログラムには次のものがあります。
logfilename="$1"
答え2
下記のリダイレクトは正常に機能します。私は新しいものを追加しませんでした。
/usr/bin/expect<<EOD > ${LOGFILE}
set timeout 60
spawn sftp $ES_SFTP_USER@$ES_SFTP_HOST:$R_LOCATION
expect "*?assword:"
send "$password\r"
expect "sftp>"
send "put /opt/AppServer/ES_billing_report/todays_report/*.txt\r"
expect "sftp>"
send "bye\r"
expect EOD
EOD