Fortigate をリモートでシャットダウン PowerChuteBusinessEdition編

ファイアウォール機器のFortigateですが、
スイッチのごとく電源ぶち抜きすると、再起動時にファイルシステムチェックのメッセージが表示されます。

しかも、表示されたファイルシステムチェックの実行をそのままポンポーンと押してしまったのなら、チェック中は通信が停止し、チェック後に再起動がかかるという仕組み。

チェックが開始されれば、運用は停止しどれくらいで終わるかもわからないファイルシステムチェックの実行バーを前に立ち尽くすしかない。。。


というわけで、ちゃんとシャットダウンしようと試した結果です。

対象は、WindowsServer2016とFortigate。結果的には、Plink.exeを利用したシャットダウンが有効でした。

1.まず鍵ペアを作成しますが、今回はMicrosoft公式GithubのOpenSSHモジュールを使ってみます。

こちらから、ダウンロードします。

OpenSSH-Win64.zip」をダウンロードしました。

適当なフォルダにダウンロードし、解凍。解凍先フォルダのパスを、システム環境変数のPATHに追記します。

sysdm.cpl」コマンドでシステムのプロパティを開き、「詳細設定」タブの「環境変数」ボタンを押します。

環境変数画面の「システム環境変数」内の「Path」変数を選択し「編集」を押します。

ここで「新規」ボタンを押して、先ほどの解凍先フォルダパスを入力します。

PowerShellを起動して、「ssh」コマンドが実行できることを確認します。

続いて、鍵ペアを作成します。「ssh-keygen」コマンドを実行します。すべてEnterを押します。

鍵ペアが作成されました。公開鍵のファイル(id_rsa.pub)を開き、Fortigate側へ登録します。FortigateではCLIでしか登録できないようです。

アクセスできることを確認します。

 

しかし、この後のplinkコマンドでは、pem形式のこの秘密鍵(id_rsa)は指定できないので、ppk形式に変換します。

PuTTYgenツールのConvertion機能を利用するのですが、鍵を指定して開き、ppk形式に保存するだけです。(最初からPuTTYgenでいいじゃないか、、、最後に書きますがsshコマンドだけでやるつもりだったんです。)

 


2.plinkでコマンド実行します。

実は、Fortigateの停止は、2回入力が必要で、

「execute shutdown」を実行したのち、y/nの要求で、「y」を入力する必要があります。

plinkでは入力ワードを複数記載したファイルを読み取り、リモート先で実行できるので、

のようなファイルを作成し、

のように実行することができます。

PowerChute Business Editionでは、コマンドファイルは以下のフォルダに配置されるので、このコマンドを記載すれば実行されます。

C:\Program Files\APC\PowerChute Business Edition\agent\cmdfiles

※初回接続時はhost keyの登録を要求されるので、echo yなどで回避する必要があります。。。後日記載


3.その他

plinkを使用する前に、いくつか試しましたがうまくいかない点がありました。

TeraTermマクロ

→ send keyするタイプ。デスクトップとの対話が発生するが、PowerChuteサービスの「デスクトップとの対話をサービスに許可」してもうまく動作せず。

 

ssh

→ 鍵ペア作成のため導入したSSHですが、このsshコマンドでも複数入力を実行することができます。実行コマンド箇所をダブルクォーテーションで囲い、その中で改行することで実現可能なのですが、、、単体スクリプトだと動作するのに、PowerChute Business Editionからだと実行されない、(yの入力タイミングがずれて機能しない)

 

以上