SSHスクリプトでリモート電源を手軽に

LO100i(HP ProLiant Server ML110 G6)によりリモートで電源を投入出来る事を踏まえて、
当ページではSSHのスクリプトを作成して電源をオンできる方法について記載します。
この方法によって443ポートをLO100iに占有せずに手軽に電源操作が行えます。


HP ProLiant ML110 G6

DDR3 4GBx2 ECC
【設定作業】
  1. LO100iのBIOS設定と、TeraTeramのインストールは終了していると想定します。
    終了していない場合は前記事を参考にして設定を行ってください。

  2. 私のML110は自宅にあり、インターネット回線はKDDI with ASAHI NETですので、次の設定を行います。
    1. Aterm BL190HW へポートマッピングの設定が必要です。
      実際の設定内容は下図の通りです。ML110のLO100iポートは192.168.10.2です。

    2. DynamicDNSへの登録が必要です。(固定IPの方は必要ありません)
      私はReadyNAS DUOへDynDnsのアドインでDynamicDNSを行っています。
      設定ファイルの参考例です。

      daemon=300
      pid=/var/run/ddclient.pid
      cache=/ramfs/ddclient.cache
      #do not activate ssl
      ssl=no 
      use=web, web=checkip.dyndns.com/, web-skip='IP Address'
      #uncomment the line bellow
      #enlever le # sur les lignes suivantes :
      login={hogeuser}
      password={hogepasswd}
      protocol=dyndns2
      server=members.dyndns.org
      wildcard=YES
      {hoge}.dyndns.org

      ※{hogeuser}と{hogepasswd}はdyndnsへ登録したユーザ名とパスワードへ変更してください。
      ※{hoge}.dyndns.orgの{hoge}はdyndnsへ登録したドメイン名へ変更してください。

  3. 次にTerTermのマクロ(ttpmacro.exe)機能で動作させる「電源オン」スクリプトを作成します。
    スクリプトのフローは1)ログインする 2)電源をオンする 3)メッセージを表示する 4)終了処理
    という流れです。
    以下にスクリプトを掲載します。ファイルは ssh2_PowerOn.ttl という名前で保存しておきます。

    ; Home Server Power On Macro
    ;
    ; File: ssh2_PowerOn.ttl
    ; Update: 2011/07/12
    ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    UserName = '{hogeuser}'
    HostName = '{hoge.dyndns.org}'
    PasswordPrompt = "Password:"
    getpassword 'password.dat' 'my_password' Password
    WaitPrompt = '/./->'
    ErrorMsg = '接続できませんでした。'
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    msg = hostname
    strconcat msg ':22 /ssh /auth=password /user='
    strconcat msg UserName
    strconcat msg ' /passwd='
    strconcat msg Password
    connect msg
    ; 接続確認
    if result=0 then
       messagebox ErrorMsg 'Error'
       end
    elseif result=1 then
       messagebox ErrorMsg 'Error'
       end
    endif
    ; プロンプトを待って電源投入コマンドを送る
    wait WaitPrompt
    sendln 'start /system1'
    ; メッセージを表示
    messagebox '電源を投入しました。起動完了まで5分程お待ちください。' '電源オン'
    ; プロンプトを待ってターミナルからアウトする
    wait WaitPrompt
    sendln 'exit'

    ※{hogeuser}はLO100iで設定した管理者(又は電源をオンにする)権限を持ったユーザ名へ変更してください。
    ※{hoge.dyndns.org}は利用されているdyndnsの(又はお持ちの)ドメイン名へ変更してください。

  4. TeraTermでSSLの証明書の取り込みをするため、一回だけ手作業でログインを行っておきます。
    1)ホスト名は利用されているドメイン名へ変更してください。
    2)「続行」をクリックします。
    3)iLO100で設定したユーザ名とパスワードを入力して、「OK」をクリックします。
    4)無事にログインできたら、exit[Enter] と入力して終了します。

  5. 上記3.で作成した ssh2_PowerOn.ttl を実行するショートカットを作成します。

    1)ssh2_powerOn.ttlを保存してあるフォルダでマウスを右クリックして[新規作成]→[ショートカット]を選択します。
    2)項目の場所に "C:\Program Files (x86)\teraterm\ttpmacro.exe" ssh2_SHS_Login.ttl と入力します。
      ※ttmacro.exeまでのパスはインストールした環境によって適当に変更してください。
    3)ショートカットに解り易い名前を付けて保存します。

  6. 5.で作成したショートカットをダブルクリックして実行してみてください。
    自動でログインして電源オンのコマンドを実行してメッセージボックスを表示します。
    OKをクリックすると、自動で終了します。