좋아, 이걸 실행하고 원격 서버에 파일을 넣을 수 있습니다. 그러나 그것이 실행되면, 나는 그것을 전송 실패, 전송 OK, 파일의 0 바이트 및 No 파일 또는 디렉토리를 반향시키고 싶습니다. 단지 코드를 실행하고 파일이 서버로 전송되었을 때 파일이나 디렉토리가없는 마지막 항목의 전자 메일을 보냅니다. 내가 도대체 뭘 잘못하고있는 겁니까 ?? Thx 사전에, 고맙습니다.Bash 오류 보고서
#!/bin/sh
HOST=10.10.1.2
USER='test'
RECIP="[email protected]"
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 [email protected]$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"
흠 정확히 지금 무엇을보고 계십니까? 'ls | *에있는 파일에 대한 xargs wc -wl; echo $ FILE done'이 이상하게 보입니다. –