ちょっと古い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/"
おしまいです。



コメントフォーム