UPS連動リモートシャットダウンに躓いた
先日の停電の際に、WEBサーバーは自動シャットダウンしていたようでしたが、電源復帰後自動ONしていませんでした。
ログを調べたところ、どうも完全な電源OFFではなく、スリープ状態になっていたようです。
通常デスクトップPCにはバッテリーが無いので、バッテリーに関する設定は無いのですが、UPSをUSBで接続しUPS管理ソフトをインストールすると、電源オプションの詳細設定の中にバッテリーの項目が増えます。
その中に、バッテリー残量が一定の割合になると、スリープ・休止・シャットダウンから選べる設定があり、それがスリープになっていたようです。なので、シャットダウンするように設定変更しました。
以前のサーバー構成の時は、UPSに直結していない他のサーバーも連動してシャットダウンするように設定できていました。
しかし今回、FAXサーバーをWEBサーバーに統合し、WEBサーバーがWindows 10になったら大変苦労することになりました。
UPSのメーカーも機種も変わっていないので、メーカーのサイトから管理ソフト「PowerPanel Business(略称PPB)」の最新版をダウンロードしインストールしました。
PPBの設定の中に、停電とかのイベントが発生した時にユーザーが作成したバッチファイルを実行させる機能があります。
Windows OSには以前からShutdownコマンドを搭載しており、以前の構成の時にもこれを使って実行できていたはずなのですが、今回はうまくいきませんでした。
Windowsエクスプローラーから直接バッチファイルを実行すると、問題なくリモートシャットダウンが動作するのですが、PPBから実行させるとエラーになり動作しません。しかもエラーメッセージが文字化けしています。
UPSのメーカーのサポート(中国?)にヘルプし、何度かメールをやり取りしましたが、文字化けが無くなるというサンプル・バッチファイルを実行しても文字化けは無くならず、OSの責任にされたり、役に立ちませんでした。
例によってググってみると、リモートPCがShutdownコマンドを拒否した時のメッセージが「アクセスが拒否されました。(5)」だという記事があり、文字化け部分の最後に(5)が付いていることに気づき、これだと思いました。
先述のように、同じバッチファイルをWindowsから直接実行したらエラーにならず、PPBからだとエラーになるのは、コマンドの実行権限の違いによるものではないかと推察しました。
このことをメーカーに連絡しましたが、今のところ返事はありません。
PPBというWEBアプリの実行権限は、こちらではどうにもできないので、他の方法を考えることにしました。
リモートPCにもPPBをインストールし、コマンドを使わず、連動させれば可能であることは分かっていましたが、PPBは常時待機動作していて、結構メモリーを消費するので、できればインストールしたくはなく、最終手段と考えていました。
それでさらにググったところ、「別端末(Windows)のプログラムを標準機能でリモート起動する方法まとめ」というサイトを見つけました。
リモートPC内にあるバッチファイルをリモートで実行する方法がいくつか記載されていました。
リモートPCにShutdownコマンドを使ったバッチファイルを作成しておき、これをリモートで起動するコマンドをPPBから実行させてみようと考えました。
リモートPCがXPなので、いくつかの方法の中でXPも搭載しているWMICコマンドを使う方法を試しましたが、これもエラーになりました。
同じ記事の中にタスクスケジューラを使う方法があり、リモートPCにタスクを作成しておき、リモートでそのタスクを実行させるというものですが、これをヒントにし、Shutdownコマンドを実行するタスクをクライアントPCに作成しておき、そのタスクを実行するコマンド「schtasks」を実行するバッチファイルをPPBから実行したらどうかという計画です。
具体的には、"schtasks /run /tn <タスク名>"というシンプルなコマンドです。これを記述したバッチファイルを作成し、直接実行したところ、うまく動作しました。
ところが、PPBから実行させたらまたエラーです。
Windows標準コマンド類は通常C:\Windows\system32フォルダにあり、このシステムフォルダにはパスが通っているので、Windowsからはコマンド名から記述しても実行できるのですが、どうもPPBはパスを認識していないようなので、コマンドをフルパスで記述し直しました。そうして再度PPBから実行させてみたところ、遂に成功しました!
この件でかなりの時間を費やしましたが、何とか解決してやれやれです。
ログを調べたところ、どうも完全な電源OFFではなく、スリープ状態になっていたようです。
通常デスクトップPCにはバッテリーが無いので、バッテリーに関する設定は無いのですが、UPSをUSBで接続しUPS管理ソフトをインストールすると、電源オプションの詳細設定の中にバッテリーの項目が増えます。
その中に、バッテリー残量が一定の割合になると、スリープ・休止・シャットダウンから選べる設定があり、それがスリープになっていたようです。なので、シャットダウンするように設定変更しました。
以前のサーバー構成の時は、UPSに直結していない他のサーバーも連動してシャットダウンするように設定できていました。
しかし今回、FAXサーバーをWEBサーバーに統合し、WEBサーバーがWindows 10になったら大変苦労することになりました。
UPSのメーカーも機種も変わっていないので、メーカーのサイトから管理ソフト「PowerPanel Business(略称PPB)」の最新版をダウンロードしインストールしました。
PPBの設定の中に、停電とかのイベントが発生した時にユーザーが作成したバッチファイルを実行させる機能があります。
Windows OSには以前からShutdownコマンドを搭載しており、以前の構成の時にもこれを使って実行できていたはずなのですが、今回はうまくいきませんでした。
Windowsエクスプローラーから直接バッチファイルを実行すると、問題なくリモートシャットダウンが動作するのですが、PPBから実行させるとエラーになり動作しません。しかもエラーメッセージが文字化けしています。
UPSのメーカーのサポート(中国?)にヘルプし、何度かメールをやり取りしましたが、文字化けが無くなるというサンプル・バッチファイルを実行しても文字化けは無くならず、OSの責任にされたり、役に立ちませんでした。
例によってググってみると、リモートPCがShutdownコマンドを拒否した時のメッセージが「アクセスが拒否されました。(5)」だという記事があり、文字化け部分の最後に(5)が付いていることに気づき、これだと思いました。
先述のように、同じバッチファイルをWindowsから直接実行したらエラーにならず、PPBからだとエラーになるのは、コマンドの実行権限の違いによるものではないかと推察しました。
このことをメーカーに連絡しましたが、今のところ返事はありません。
PPBというWEBアプリの実行権限は、こちらではどうにもできないので、他の方法を考えることにしました。
リモートPCにもPPBをインストールし、コマンドを使わず、連動させれば可能であることは分かっていましたが、PPBは常時待機動作していて、結構メモリーを消費するので、できればインストールしたくはなく、最終手段と考えていました。
それでさらにググったところ、「別端末(Windows)のプログラムを標準機能でリモート起動する方法まとめ」というサイトを見つけました。
リモートPC内にあるバッチファイルをリモートで実行する方法がいくつか記載されていました。
リモートPCにShutdownコマンドを使ったバッチファイルを作成しておき、これをリモートで起動するコマンドをPPBから実行させてみようと考えました。
リモートPCがXPなので、いくつかの方法の中でXPも搭載しているWMICコマンドを使う方法を試しましたが、これもエラーになりました。
同じ記事の中にタスクスケジューラを使う方法があり、リモートPCにタスクを作成しておき、リモートでそのタスクを実行させるというものですが、これをヒントにし、Shutdownコマンドを実行するタスクをクライアントPCに作成しておき、そのタスクを実行するコマンド「schtasks」を実行するバッチファイルをPPBから実行したらどうかという計画です。
具体的には、"schtasks /run /tn <タスク名>"というシンプルなコマンドです。これを記述したバッチファイルを作成し、直接実行したところ、うまく動作しました。
ところが、PPBから実行させたらまたエラーです。
Windows標準コマンド類は通常C:\Windows\system32フォルダにあり、このシステムフォルダにはパスが通っているので、Windowsからはコマンド名から記述しても実行できるのですが、どうもPPBはパスを認識していないようなので、コマンドをフルパスで記述し直しました。そうして再度PPBから実行させてみたところ、遂に成功しました!
この件でかなりの時間を費やしましたが、何とか解決してやれやれです。
スポンサーサイト
theme : 通信・回線・サーバー
genre : コンピュータ