2011-11-09 1 views
1

내 쉘 스크립트에서 scp 출력을 로그 파일로 푸시하려고합니다. 아래 코드 스 니펫입니다. 명령 줄에서 로그를 볼 수 있지만 scp 로그는 볼 수 없습니다. 파일에 푸시되었습니다. 이유가 무엇일까요?쉘 스크립팅 : 로그 파일로 출력 할 수 없습니다

FTP_LOG = "Log.txt" 
scp -v ${feedFile} ${USER}@${DESTINATION}:inbox >> ${FTP_LOG} 

Google에서 동일한 문제에 직면 한 다른 사람들이 있다는 것을 알 수 있도록 도와주세요.

다른 문제는 파일 전송이 성공했을 때 scp 명령 이후에 마지막으로 반환 된 코드가 실제로 발생하지 않는다는 것입니다. 파일 전송이 실패하더라도 나는 마지막 반환 코드를 indicatng 성공으로 얻습니다.

답변

4

-v은 STDOUT이 아닌 STDERR로 출력합니다. 당신은 2>>을하지 >>

+0

그래서 전체 명령이 됐지 다음과 같이 될 것입니다? scp -v $ {feedfile} $ {user} @ $ {DESTINATION} :받은 편지함 2> not >> $ {FTP_LOG}. 쉘에 익숙하지 않으므로 이걸 도와주세요. – crackerplace

+1

Youll은'2 >>'를 원합니다. 'scp -v $ {feedFile} $ {USER} @ $ {DESTINATION} :받은 편지함 2 >> $ {FTP_LOG}'. 나는 당신에게'man bash'를 추천하고 소개 입력 리디렉션의 기초에 대해 REDIRECTION을 보았습니다. – Sorpigal

+0

@Sorpigal - 좋은 지적. 나는 추가를 놓쳤다. – Quentin

0

가장 aproch 이럴 그렇게,이 개 파일에 표준 출력 및 표준 오류를 리디렉션하는 것입니다

ftp_log=log 
ftp_error_log_err_log 
scp -v "$feedFile" [email protected]${destination}:inbox > "$ftp_log" 2> "$ftp_error_log" 
+0

이 부분을 설명해 줄 수 있습니까? "$ ftp_log"2> "$ ftp_error_log" 어떻게됩니까? – crackerplace

+0

셸의 기본 리디렉션은 STDOUT (파일 설명자 1)이므로 STDOUT을 $ ftp_log로 리디렉션합니다. STDERR은 파일 설명자 2이고, $ ftp_error_log에 STDERR의 경로 재 지정이 있습니다. 자세한 내용은 STDIN 파일 설명자가 0입니다. http://en.wikipedia.org/wiki/File_descriptor –

+0

감사합니다. sputnick .. gotta – crackerplace