SSH 명령에서 원치 않는 실패 메시지를 삭제하는 방법은 무엇입니까?

SSH 명령에서 원치 않는 실패 메시지를 삭제하는 방법은 무엇입니까?

ssh 명령 중에 lun을 찾을 수 없을 때 수신된 콘솔에 메시지가 인쇄되는 것을 방지하려고 합니다. SSH는 NetApp 파일러와 함께 사용됩니다. 명령이 Solaris 10 호스트에서 실행 중입니다.

내가 실행 중인 일부 코드는 다음과 같습니다.

for filer in <list>
do
echo $filer
ssh $filer lun show <lunpath> |grep vol
...
done

LUN을 찾으면 코드는 제대로 작동하지만 LUN을 찾을 수 없으면 SSH 명령은 "lun show: no such LUN presents"를 반환합니다.

-v 변형을 포함하여 여러 grep 및 egrep 명령을 시도했지만... 여전히 "lun show: 해당 LUN이 없습니다" 메시지가 콘솔에 인쇄됩니다.

이 줄을 콘솔에 인쇄하는 것을 건너뛰려면 어떻게 해야 합니까?

답변1

최신 SSH는 원격 호스트에서 stdout과 stderr을 두 개의 다른 스트림으로 다시 가져오는 것 같습니다.

stdout과 stderr을 결합하는 필터를 만들려면 다음을 수행할 수 있습니다.

ssh $filer lun show <lunpath> 2>&1 |grep vol

stderr를 별도의 파일로 보내려면 다음을 수행할 수 있습니다.

ssh $filer lun show <lunpath> 2>lun.show.stderr |grep vol
if [ -s lun.show.stderr ]; then
   # there was some stderr output
   grep -v "No such LUN exists" lun.show.stderr
fi

표준 오류 삭제:

ssh $filer lun show <lunpath> 2>/dev/null | grep vol

이렇게 하면 실제 오류가 숨겨지고 디버깅이 어려워질 수 있습니다.

관련 정보