特定の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 runningrtvscand 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

おすすめ記事