Отчеты об ошибках Bash - PullRequest
       8

Отчеты об ошибках Bash

0 голосов
/ 14 декабря 2011

Хорошо, я могу заставить это работать и поместить файл на удаленный сервер. Тем не менее, когда он запускается, я хочу, чтобы он повторил передачу не удалось, передача 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"

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Вы можете использовать /bin/sh -xv yourshellscript.sh, чтобы понять, что происходит.

И вы можете занести важные сообщения в системный журнал, используя logger

0 голосов
/ 14 декабря 2011
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

Присвойте результат переменной, также попробуйте использовать выход, если вам не нужно больше обрабатывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...