私はスクリプトの世界に不慣れで、現在スクリプトを使用して、管理しているsanデバイスのヘルスチェックを実行しています。
スクリプトは単純で、コマンドの出力をリモート デバイスから現在のファイルにリダイレクトし、ローカル ホストに転送します。次に、diff コマンドを使用して、現在のファイルと参照ファイルの出力を比較し、違いに関する電子メール アラートを受け取ります。diff の出力は変数「変数」に渡され、結果を取得する場合は if ループを使用します
これまでのところ、自動ログインと電子メールの部分が機能しています(DIFFコマンドとの違いがある場合にのみ電子メールを受け取ります)。しかし、私が今受け取った電子メールは、そのテストが 1 つの長い文字列に連結されているため、見にくく、受信者にとって理解しにくいものになっています。
現在のスクリプトを以下に貼り付けます
ssh test@ip_of_device switchshow > switchshow_results
variable=diff switchshow_reference switchshow_results
if [[ $variable -eq 0 ]]
then
echo $"nothing"
else
echo $variable | mail -s switch_HARDWARE_CHECK recipeint_email_address
fi
上記のスクリプトの出力は空白であり、diff コマンドで違いが見つからない場合、メールが届きません。
ただし、差分コマンドが違いを見つけると、以下に貼り付けられたようなメールが届きます
16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 26c26 < 10 10 010a00 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a
これは理想的には電子メールでこのように見えるはずです..
16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public
26c26 < 10 10 010a00 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public
29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a
出力は、電子メールで一度に 1 行表示する必要があります。助言がありますか?これは、違いがある行が1つしかない場合は正常に機能しますが、複数の行の違いにより上記の問題が発生します。また、私の要件は、差分出力をメールで送信する必要があることです。diff コマンドでさまざまなオプションを確認しましたが、役立つオプションを見つけることができませんでした。
どんな助けでも大歓迎です。