情報を使用してディレクトリをエコーし​​ます。

情報を使用してディレクトリをエコーし​​ます。

次のスクリプトが実行されていますが、結果について詳しく知りたいです。サービス状態のほかにrtvscandファイルがある場所も追加したいと思います。たとえば、Symantecファイルは/ appディレクトリにあり、Symantecファイルは/ optディレクトリにあります。

# cat /app/scripts/symantec_scripts/symantec.sh
for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
if [ -s /app/Symantec/virusdefs/definfo.dat ]; then
  cat /app/Symantec/virusdefs/definfo.dat
else
  cat /opt/Symantec/virusdefs/definfo.dat
fi
echo `service rtvscand status`
echo ....................................................................." ; done | tee /tmp/symantec_info.`date +"%m%d%y"`

答え1

下記の他の(より良い)回答をご覧ください

locif ステートメントに変数を追加します。

# cat /app/scripts/symantec_scripts/symantec.sh
for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
  if [ -s /app/Symantec/virusdefs/definfo.dat ]; then
    loc='/app'
    cat /app/Symantec/virusdefs/definfo.dat
  else
    loc='/opt'
    cat /opt/Symantec/virusdefs/definfo.dat
  fi
echo `service rtvscand status`
echo Location is $loc/Symantec/virusdefs/definfo.dat
echo ....................................................................." ; done | tee /tmp/symantec_info.`date +"%m%d%y"`

編集内容は、印刷位置の周りの二重引用符loc="string"に変更および削除されました。loc='string'echo

答え2

さて、何らかの理由で変数を使って場所を保存することはうまくいきません。全体的に、より良いアプローチは、find単にシマンテックがある場所を見つけ、cat問題なくフルパスをエコーすることです。

for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
cat $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo Location is $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo ....................................................................."
done | tee /tmp/symantec_info.`date +"%m%d%y"`

$(command)デフォルトでは、コマンドはシェルのように実行され、出力に置き換えられるため、検索$(find / -maxdepth 2 -name Symantec)で始まり、/2つのディレクトリだけが深く移動し、Symantecという名前を見つけて出力します。この出力は、完全な$(command)ステートメントの代わりに使用されます。

あなたの場合、ステートメント全体は$(find...)次の結果を出力する必要があります/app/Symantec/opt/Symantec

ifこれにより、長い説明を避け、他の場所にいる場合はシマンテックを見つけることができるという利点があります。

唯一の欠点は、何らかの理由でルートディレクトリとその上のディレクトリに複数のSymantecというディレクトリがあることです/。これは問題を引き起こす可能性があります。

関連情報