Хорошо, я могу заставить это работать и поместить файл на удаленный сервер. Тем не менее, когда он запускается, я хочу, чтобы он повторил передачу не удалось, передача OK, нулевые байты в файле и нет такого файла или каталога. Он просто запускает код и отправляет электронное письмо с последней записью, в которой нет такого файла или каталога, когда файл явно передается на сервер. Что я делаю неправильно ??
Спасибо заранее, спасибо.
#!/bin/sh
HOST=10.10.1.2
USER='test'
RECIP="user@somemail.com"
cd /home/test
FILE=ARG$(date '+%Y%m%d').txt
BYTES=`stat -c%s $FILE`
CONNECTION=`netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print ""}'`
RUN_AS=`whoami`
RESULT=`sftp $USER@$HOST <<EOF
FILE=ARG$(date '+%Y%m%d').txt
cd /998979/DES
if [ -e $FILE ]; then
put $FILE
EOF`
echo $CONNECTION "Connection to network is established."
ls | xargs wc -wl for file in *; echo $FILE done
if [ $? -eq 0 ]; then
echo "$RESULT" "Transfer of file failed. `date`"
SBJ="Transfer of file failed `date`"
fi
echo "$RESULT" "Transfer OK"
if [ $? -eq 0 ]; then
SBJ="Transfer OK. `date`"
echo "$RESULT" "Transfer OK"
fi
if \[ ! -s ${FILE} \]; then
echo "File: ${FILE} is not present or a ZERO byte file"
SBJ="Failed to upload. Zero bytes in file. `date`" # zero bytes sent
fi
if [ -a $FILE ]; then
echo "$RESULT" "No such file or directory"
SBJ="No such file or directory. `date`"
fi
BODY="Process Report.......
SRC SERVER:`hostname`
DST SEVER: TESTSERVER
SCRIPT: /usr/local/bin/put.sh
RUN AS: "$RUN_AS"
RESULT: "$RESULT" "$FILE"
CONNECTION: "$CONNECTION"
FILENAME: "$FILE"
BYTES: "$BYTES"
DATE/TIME: `date`"
echo "$BODY" | mail -s "$SBJ" "$RECIP"