前回はシステムやアプライアンス、組み込み機器などを運用していく上で「再起動」が現実的な方法の一つつであることを説明した。今回は、組み込み機器の再起動をPowerShellから実施する場合のサンプルスクリプトを取り上げる。

→連載「PowerShell Core入門 - 基本コマンドの使い方」の過去回はこちらを参照。

ルータの再起動準備

組み込み機器やアプライアンス、または何らかのシステムでもよいのだが、再起動の処理をWebブラウザから行うような仕組みになっているのであれば、これまで取り上げてきたPowerShellとSeleniumの機能を使うことで自動化が可能だ。

ここではそのサンプルとして、PowerShellスクリプトからルータを再起動する方法を取り上げる。まず、ルータの管理画面にMicrosoft Edgeからアクセスする。

  • ルータの管理インターフェース(Web)

    ルータの管理インタフェース(Web)

ルータの再起動を行うためのページを開く。

  • ルータの再起動を行うページを開く(メニューフレームあり)

    ルータの再起動を行うページを開く(メニューフレームあり)

このページはフレームで表示されているので、メニューのフレームを表示させずに再起動ページのみを表示させる。

  • ルータの再起動を行うページを開く

    ルータの再起動を行うページを開く

PowerShellから、この再起動ボタンをクリックすればよいので、このボタンを特定するために、Microsoft Edgeの開発者ツールを起動し、要素やそのXPathを調査しておく。

  • Microsoft Edge開発者ツールを起動してXPathなどを調べておく

    Microsoft Edge開発者ツールを起動してXPathなどを調べておく

対象 XPath
再起動ボタン //∗[@id="REBOOT"]

再起動ボタンは、IDが「REBOOT」またはXPathが「//*[@id="REBOOT"]」だ。使いやすい方で特定すればよい。

ちなみに、このルータの場合は再起動ボタンを押すと次のように確認用のダイアログが表示される。

  • 再起動の確認を求めるダイアログ

    再起動の確認を求めるダイアログ

この処理をPowerShellスクリプトから自動的に実行するようにすればよいわけだ。

PowerShellスクリプトにまとめる

では、上記処理をPowerShellスクリプトにまとめていく。まず、PowerShellから制御するためのMicrosoft Edge WebDriverを起動する。このスクリプトは稿末に付録として添付しておくのでそちらを参考にしていただきたい。

webdriver_edge_start.ps1

WebDriver経由でルータの再起動ページを開く。このルータはベーシック認証を使っているので、URLの指定にはベーシック認証のユーザー名とパスワードも含めてある。

Set-SeUrl -Url http://ユーザ名:パスワード192.168.1.1/ntt/userMaintenance/reboot

次に「再起動」ボタンの要素を取得してクリックする。

$Element = Get-SeElement -By Id -Value REBOOT
Invoke-SeClick -Element $Element -Action Click

この状態でMicrosoft Edgeには確認用のダイアログが表示されているので、「OK」をクリックする。

SeShouldHave -Alert -PassThru | Clear-SeAlert -Action Accept

このルータはシステムの再起動に3分ほどかかるので、処理が完了するまで待機する。

Start-Sleep 190

処理が終わったら、最後にMicrosoft Edge Driverを終了する。この終了スクリプトについても、稿末の付録を参考にしていただきたい。

Stop-SeDriver
webdriver_edge_stop.ps1

上記の処理をまとめたPowerShellスクリプト「router_reboot.ps1」は、次のようになる。

# Microsoft Edge Webドライバを起動
webdriver_edge_start.ps1

# ルータ再起動ページをオープン
'ルータ再起動ページをオープンします。'
Set-SeUrl -Url http://ユーザ名:パスワード@192.168.1.1/ntt/userMaintenance/reboot

# 再起動ボタンをクリック
'再起動ボタンをクリックします。'
$Element = Get-SeElement -By Id -Value REBOOT
Invoke-SeClick -Element $Element -Action Click
SeShouldHave -Alert -PassThru | Clear-SeAlert -Action Accept

# 3分間とちょっと待機
'ルータを再起動しています。3分ほどお待ちください。'
Start-Sleep 190

# Microsoft Edge Webドライバを終了
Stop-SeDriver
webdriver_edge_stop.ps1

このPowerShellスクリプトを実行すると、PowerShell経由で制御できるMicrosoft Edgeが起動し、管理用Webページから再起動ボタンが押下されてルータが再起動する。

スクリプトにして再起動処理を自動化する

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら