2013-09-04 2 views
0

저는 스크립팅의 세계에 처음 왔으며 현재 관리하고있는 san 장치에서 상태 확인을 수행하기 위해 스크립트를 사용하고 있습니다.새 줄에서 diff 명령의 출력을 얻는 방법

스크립트는 간단하며 명령 출력을 원격 장치에서 로컬 호스트로 현재 파일로 리디렉션합니다. 그런 다음 diff 명령을 사용하여 현재 파일 및 참조 파일의 출력을 비교하고 차이점에 대한 전자 메일 경고를받습니다. diff의 결과는 변수 "variable"에 전달 된 다음 결과를 얻는 경우 if 루프를 사용합니다.

나는 지금까지 자동 로그인과 전자 메일 작업을 수행했습니다. (DIFF와 차이가있을 경우에만 전자 메일을받습니다. 명령). 그러나 내가 지금 얻은 이메일은 하나의 긴 문자열로 결합 된 테스트를 가지고 있습니다.이 문자열은보기에 좋지 않으며 사람들에게 이해하기 쉽지 않습니다.

나의 현재 스크립트는 위의 스크립트의 출력이 비어

ssh [email protected]_of_device switchshow > switchshow_results 
variable=diff switchshow_reference switchshow_results 
if [[ $variable -eq 0 ]] 
then 
    echo $"nothing" 
else 
    echo $variable | mail -s switch_HARDWARE_CHECK recipeint_email_address 
fi 

아래에 붙여 그리고 난 diff 명령이 어떤 차이를 발견하지 않는 이메일을하지 않습니다. 은 diff 명령은 차이를 발견하면

16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 26c26 < 10 10 010a00 id N4 Online FC F-Port 1  N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a 

이 이상적 이메일에 다음과 같이한다 아래에 붙여 넣기로

그러나, 나는

16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 

26c26 < 10 10 010a00 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 

29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a 

출력이 한 줄에 표시되어야합니다에 .. 이메일을 한 번에 이메일에. 어떤 제안? 차이점이있는 줄이 하나 밖에없는 경우이 방법을 사용하면 문제가 없지만 여러 줄의 차이가 있으면 위의 문제가 발생합니다. 또한 내 요구 사항은 diff 출력이 나에게 이메일로 보내 져야한다는 것이다. diff 명령에서 다양한 옵션을 확인했지만 도움이 될만한 항목을 찾을 수 없었습니다.

도움이 될 것입니다.

답변

0

당신은 $variable

사용 따옴표를 배치하는 것을 잊었다이 :

echo "$variable" | mail -s switch_HARDWARE_CHECK recipeint_email_address 

그 이유는 "변수"에서해야하는데 무엇

+0

위대한 작품, Thanks a ton !. 새 행에 출력이 표시되지만 23,24c23,24 (줄 번호로 가정) 및 <부호와 같은 숫자가 있습니다.이러한 원치 않는 문자를 제거 할 수있는 방법이 있습니까? – user46359

+0

@ user46359 다른 질문입니다. 그러나 무엇을 위해? 좀 더 읽기 쉬운 형식을 원한다면,'-y' 플래그를 사용하여 사물을 나란히 출력하십시오. 구문 분석 가능한 형식을 원한다면 [man diff] (http://unixhelp.ed.ac.uk/CGI/man-cgi?diff)를 읽어보십시오. –

0

전송할 전자 메일 컨텍스트에서 '/ n'을 ''로 바꾸려면 sed 명령을 실행해야합니다.

전자 메일은 HTML 텍스트로 렌더링되므로/n은 생략됩니다.
은 html을 다음 줄에 표시합니다.

0

here을 설명?

diff? (백틱 사용)

또는 diff의 종료 코드는 무엇입니까? ($를 사용 하시겠습니까?)

당신이 지금 당장 얻은 것이 나에게 오류를주기 때문에.

-bash: switchshow_reference: command not found 
관련 문제