특정 rtvscand 출력 보고서만 가져오도록 스크립트를 조정하세요.

특정 rtvscand 출력 보고서만 가져오도록 스크립트를 조정하세요.

다음 작업 스크립트가 있습니다.

for i in `cat list` ; do 
  ssh root@$i "uname -n ; cat /opt/Symantec/virusdefs/definfo.dat ; service rtvscand status ;  echo ....................................................................." ; 
done | tee /tmp/symantec_info.`date +"%m%d%y"`

아래와 같이 출력이 생성됩니다.

server1.local
[DefDates]
LastDefs=20150824.003
CurDefs=20150826.002
rtvscand is running
.....................................................................
server2.local
[DefDates]
LastDefs=20150609.001
CurDefs=20150610.004
rtvscand is not running
.....................................................................
server3.local
[DefDates]
LastDefs=20150607.001
CurDefs=20150608.004
rtvscand is running
.....................................................................

그러나 rtvscand를 실행하는 서버만 출력에 표시하고 싶습니다. 즉, 출력이 정확히 다음과 같기를 원합니다.

server1.local
[DefDates]
LastDefs=20150824.003
CurDefs=20150826.002
rtvscand is running
.....................................................................
server3.local
[DefDates]
LastDefs=20150607.001
CurDefs=20150608.004
rtvscand is running
.....................................................................

답변1

다음 출력을 기반으로 결정을 내릴 수 있습니다 service rtvscand status.

[ "$(service rtvscand status)" = 'rtvscand is running' ] && do_what_you_want

이는 출력이 다음 rtvscand is running과 같으면 rtvscand is running무언가를 수행하고 그렇지 않으면 수행하지 않음을 의미합니다.

따라서 스크립트는 다음과 같은 형식을 취할 수 있습니다.

while IFS= read -r name; do
   ssh root@"$name" '[ "$(service rtvscand status)" = "rtvscand is running" ] && \
                      { uname -n; cat /opt/Symantec/virusdefs/definfo.dat ;}'
done <list.txt

관련 정보