2011-12-14 2 views
0

좋아, 이걸 실행하고 원격 서버에 파일을 넣을 수 있습니다. 그러나 그것이 실행되면, 나는 그것을 전송 실패, 전송 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" 
+1

흠 정확히 지금 무엇을보고 계십니까? 'ls | *에있는 파일에 대한 xargs wc -wl; echo $ FILE done'이 이상하게 보입니다. –

답변

2

무엇이 일어나고 있는지 이해하려면 /bin/sh -xv yourshellscript.sh을 사용할 수 있습니다.

그리고 당신은 logger

+0

ls | *에있는 파일에 대한 xargs wc -wl; echo $ FILE done – user1098279

+0

위의 코드는 스크립트가 실행될 때 폴더에있는 파일들을 나열합니다. – user1098279

0
count=$? 

if [ $count -eq 0 ]; then 
echo "$RESULT" "Transfer of file failed. 
`date`" SBJ="Transfer of file failed `date`" 
else 
echo "$RESULT" "Transfer OK" 
fi 

변수에 결과를 할당 사용하여 시스템 로그에 중요한 메시지를 기록 할 수있다, 또한, 당신은 더 많은 처리를 할 필요가 없을 때 종료를 사용하려고합니다.

+0

위, 아직 주사위를 사용하지 않았습니다. – user1098279

+0

나는 파일이나 디렉토리에 "error"를 생성하지 않고 파일에 0 바이트를 생성 할 수있다. 방금 스크립트를 다시 실행했고 FTP가 100 % 혼란스러워 보였을 때 "해당 파일이나 디렉토리가 없습니다"라는 메시지가 나타났습니다. – user1098279

+0

그래서 – user1098279