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
이렇게 하면 실제 오류가 숨겨지고 디버깅이 어려워질 수 있습니다.