サーバー1の同じスクリプト内で、電子メール内の他のサーバー2の変数の内容を取得し、電子メールの内容にある2つのサーバーの値を印刷します。

サーバー1の同じスクリプト内で、電子メール内の他のサーバー2の変数の内容を取得し、電子メールの内容にある2つのサーバーの値を印刷します。

シェルスクリプトを使用して、3つのサーバー状態をHTMLテーブル形式で送信する必要があります。出力は次のとおりです。

---------------------------------------
|           Daily Status              |
---------------------------------------
|   Ad Status  |                      |
---------------------------------------
|   Servers    | Ser1  | Ser2 | Ser3  |
---------------------------------------
| Serv. Status |       |      |       |
---------------------------------------
| DB Server    |       |      |       |
---------------------------------------
|            Other Status             |
---------------------------------------
| Usage        |       |      |       |
---------------------------------------
|           Final Stats               |
---------------------------------------
| Total        |       |      |       |
---------------------------------------
| Success      |       |      |       |
---------------------------------------
| Fail         |       |      |       |
---------------------------------------
| Overall      |                      |
---------------------------------------

サンプルスクリプトでこれを実行しようとしましたが、上記の表とは異なる結果が出ました。

#!/bin/sh
 
spawn ssh [email protected]
interact

 ......
 ad_status=$(echo .....)
 if [[ $ad_status == "yes" ]]; then
    ad_status=$(echo "OK")
 elif [[ $ad_status != "yes" ]]; then
    ad_status=$(echo "NOK")
 fi
  .... <same for all variable which mention in below table format>
echo "
<html>
<body>
<table>
    <tr>
            <th>Daily Status</th>
            <tr><td>Ad Status</td><td colspan=3>$ad_status</td></tr>
            <tr><td>Servers</td><td>ser1</td><td>ser2</td><td>ser3</td></tr>
            <tr><td>Serv. Status</td><td>$server_status</td><td></td><td></td></tr>
            <tr><td>DB Server</td><td>$db_status</td><td></td><td></td></tr>
            .............
    </tr>
</table>
</body>
</html>" > abc.html

(uuencode abc.html abc.html) | cat abc.html | mail -s "$(echo -e "Status\nContent-Type: text/html")" [email protected]
exit 0

問題は他のサーバースクリプトから印刷された値にあります。ここ171.234.67.89他のサーバー2のIPアドレス。ad_status/path/script/test.shに変数を印刷する必要があります。サーバー2&サーバー3しかも。デフォルトのスクリプトはServer1で実行されているため、他のサーバーに接続するためにパスワードなしの認証を使用しました。他サーバのメール内容値も出力されます。この問題を解決するのに役立ちますか?

答え1

正確に何が必要なのかはよくわかりませんが、次のようになります。

 ad_status=$(echo .....)
 if [[ $ad_status == "yes" ]]; then
    ad_status="OK"
 else
    ad_status="NOK"
 fi

答え2

他のサーバーとの接続が完了したら、ad_status22番目のサーバーと同様に変数を作成します。その後、呼び出しスクリプトはHTMLタグ内の他のスクリプトの変数/値を使用します。

関連情報