ちょっと古いHPのサーバ「ProLiant DL360 G4」をまだ動かしていますが、忘れた頃にハングアップしている事があります。
HPのサーバにはLinux向けのツールも配布されており、G4だとhpasmをインストールするとASR(Automatic Server Recovery)という、無応答で再起動してくれる便利ツールがありますが、このサーバだけ何故か動作してくれません。
正常にASRが動作しているサーバで自動再起動がかかると、root宛に以下のメッセージが届きます。
Trap-ID=6025 An 'ASR Recover Complete' trap signifies that the system has been shutdown by the ASR feature and has just become operational again.
もう少ししたら止める予定のサーバなので、とりあえずcronで死活チェックしてiLO経由で再起動してしまいます。
HPサーバのiLO経由で再起動という内容ですが、大手メーカーのサーバは大抵の場合HPのiLOのように電源さえ来ていれば、ネットワーク経由で再起動などが行える機能が備わっているので、コマンド部分などを少し修正すれば同じように再起動できます。
cronで実行するシェルスクリプト
#!/bin/sh # チェック対象のURL URL="http://sakue.com/" # SSH接続先の情報(iLO) SSH_USER="sakue" SSH_PASS="1234567" SSH_HOST="192.168.2.201" # httpステータスコードを取得 status=`/usr/bin/curl -LI $URL -o /dev/null -w '%{http_code}' -s` # ステータスコードが200なら何もせず終了 if [ "$status" -eq '200' ]; then # cronにログ出力(OK) echo `LANG=C date "+%b %-d %H:%M:%S"` $SSH_USER ServerCheck $SSH_HOST is Status 200 OK >> /var/log/cron 2>&1 exit 0 else # cronにログ出力(NG) echo `LANG=C date "+%b %-d %H:%M:%S"` $SSH_USER ServerCheck $SSH_HOST check Faild - StatusCode:${status} >> /var/log/cron 2>&1 fi # expect開始 expect -c " # タイムアウトを長めに set timeout 7200 # iLOへssh接続 spawn ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss -o KexAlgorithms=diffie-hellman-group1-sha1 -o Ciphers=aes128-cbc,3des-cbc -o MACs=hmac-md5,hmac-sha1 $SSH_USER@$SSH_HOST # 条件1 expect { # この文字が出現したら -re \".*\[pP\]assword:.*\" { # これを自動入力 send \"$SSH_PASS\r\" # 応答が遅いので少し待つ sleep 6; # 再起動(iLOコマンド) send \"reset /system1 soft\r\" } } # 条件2 expect { # 対象の文字が出現したら抜ける \"COMPLETED\" { exit 1 } eof { exit 0 } } "
以下のssh接続開始部分ではアルゴリズムを指定していますが、古いサーバでは指定しないと接続できないためです。
新しいサーバであれば指定しなくても接続できます。
# iLOへssh接続 spawn ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss -o KexAlgorithms=diffie-hellman-group1-sha1 -o Ciphers=aes128-cbc,3des-cbc -o MACs=hmac-md5,hmac-sha1 $SSH_USER@$SSH_HOST
例えば「DL360 G4」の場合だと、シンプルに「ssh 192.168.2.201」とすると以下のように即座に切断されてしまいます。
[root@sakue ~]# ssh 192.168.2.201 Received disconnect from 192.168.2.201 port 22:2: Client Disconnect Disconnected from 192.168.2.201 port 22
古いHPサーバのiLOへのSSH接続トラブル(ProLiant DL360 G4)
古いHPサーバのiLOへのssh接続 年代物のHPサーバ「ProLiant DL360 G4」がまだ動いていますが、HPのサーバにはiLOというコンセントさえ接続されていればOSが起動していなくても、リモートから起動したり色々できる機能が備...
/etc/crontabへ毎時0分に実行するよう記載しておきました。
間隔はお好みで。
0 */1 * * * root /etc/cron.sakue.scripts/hp-serverchk.sh
/var/log/cronに下のようなチェックログが残ります。
Feb 4 09:00:01 sakue ServerCheck 192.168.2.201 is Status 200 OK
ステータスコードが200以外なら再起動しますので、動作確認したい場合は以下を存在しないURLに書き換えて実行します(404が返ってくるURLなど)
# チェック対象のURL URL="http://sakue.com/"
おしまいです。
コメントフォーム