投稿

7月, 2021の投稿を表示しています

ESXiの特定のログで特定のメッセージが出た際にvCSAからメールが送信されるように仕込む

前回 と 前々回 の記事は標題の内容が実施したかったための準備だった。 本記事で紹介するスクリプトを理解するためには前提になるので、まだ読んでいない方は一読してほしい。 この記事では、ESXi の任意のログファイルに任意の文字列が記録された際に、vCSA 経由で任意のメッセージを送信するための雛形となるスクリプトを紹介する。 雛形スクリプト 以下のスクリプト (monitorLogFileAndInvokeAction.sh) を作成した #!/bin/sh logfile="/var/run/log/vmkernel.log" message="hogehogehoge" vcsa_ipaddress="<vcsa_ip>" id_rsa_filepath="<path_to_privatekey>" sender_address="<address sent from>" rcpt_address=<address sent to> action(){    ssh -i $id_rsa_filepath  $vcsa_ipaddress "echo $1 | sendmail -v -f $rcpt_address $sender_address" } monitorLogFileAndInvokeAction () { tail -fn0 $logfile | \    while read line; do       echo "$line" | grep "$message"       if [ $? = 0 ]       then           action "`date`"       fi    done } monitorLogFileAndInvokeAction  太字に部分は、環境や目的に合わせて適切な値を代入する必要がある。 今回の例では、監視するログファイルとして vmkernel.log を指定し、トリガーとなるメッセージとして hogehogehoge を指定している。  また、メール本文にはメッ

ESXiからvCSAに公開鍵認証でSSH接続する

 都合により、ESXi から vCSA に対して簡易に(スクリプト化可能な方法で)SSH接続をしたくなったので準備手順として、公開鍵認証の設定を記録する。 参考記事 今回の記事内容はおおむね以下の記事を参考にしている。 https://vhoge.hateblo.jp/entry/2021/01/04/231350 上記記事との差異の要点としては、通常は SSH Client 側で作成する公開鍵をサーバ側(vCSA 側)で作成している点である。 この理由は簡単で、ESXi には公開鍵作成に必要な ssh-keygen コマンドがないからである。 したがって、 vCSA 側で作成した秘密鍵を ESXi にコピーする必要がある 細かいところは上記記事を見ていただくとして、今回は端的な手順とコマンドの記載だけとする。 接続用ユーザを作る 今回は root ユーザでログインするつもりなので作ってない。 公開鍵を作成して設置 vCSAにて以下のコマンドを実行して公開鍵と秘密鍵を生成する #  ssh-keygen -t rsa -b 4096 公開鍵の設置については、作成された公開鍵( .pub のほう)を .ssh/authorized_keys に追記すればよい。 上記記事に従うなら、ssh-copy-id コマンドでも実施可能である。 とはいえ、コピー先が自分自身なので、 以下のようにすればよい。 # ssh-copy-id -i /root/.ssh/id_rsa.pub localhost ※自分自身へのSSHだがパスワードは要求されるので入力する 秘密鍵を設置 これは、参考記事にはないステップである。 vCSA で作成した秘密鍵(.pub がないほう)を ESXi の任意のディレクトリにコピーすればよい。 ただし、再起動でなくなってしまう RAMDISK に配置するのはイケてないので、Local Datastore か Scratch partition にコピーしよう。 接続テスト ESXiに接続して、 ssh コマンドで -i で秘密鍵を指定して vCSA に接続すればよい。 認証なしでログインできれば成功である。 # ssh -i id_rsa <vcsa_ipaddress> パスワード認証無効化など諸々 参考記事ではパスワード認証の無効化を実