サーバAからサーバBをシャットダウンさせるシェルスクリプトを書きたいのですが、
どのように書けばいいのでしょうか?
いろいろやり方はあると思いますが、一般的なのはsshでリモートでコマンド実行する方法じゃないかと思います。手順は以下のとおりです。
セキュリティのことを考えた場合サーバBでsshの接続元IP制限や、公開鍵に対して実行できるコマンドの制限を行った方が良いかもなどありますが、とりあえず基本的な流れは上記のとおりで実現できると思います。
サーバA 192.168.0.1
サーバB 192.168.0.2
と仮定します。
サーバA・B、両方のCentOS5.4上で下記の設定を行います。
1. rsh-serverをインストール
yum install rsh-server
2. xinetdでrshを許可
vi /etc/xinetd.d/rsh して
disable = yes
↓
disable = no
に変更
3. rshを許可するよう/etc/securettyに追加
echo "rsh" /etc/securetty
4. /etc/hosts.allowにrshを許可するIPを追加
echo "in.rshd : 192.168.0.1" >> /etc/hosts.allow
echo "in.rshd : 192.168.0.2" >> /etc/hosts.allow
5.root権限でrshを利用できるよう.rhosts追加&パーミッション変更
echo "192.168.0.1 root" >> /root/.rhosts
echo "192.168.0.2 root" >> /root/.rhosts
chmod 600 .rhosts
6.xinetd再起動
/etc/rc.d/init.d/xinetd restart
以上で、サーバAからサーバBをシャットダウンしたい場合は
rsh 192.168.0.2 halt
サーバBからサーバAを再起動したい場合は
rsh 192.168.0.1 reboot
で制御することができます。
制御の権限を一方通行にしたい場合は/etc/hosts.allowと.rhostsの他方のIPを削除します。
ただ、このrshの利用した方法は設定こそ簡単ですが、セキュリティ上きわめて脆弱(リモートPCのroot権限実行にパスワードすら求めません)で、あまりおすすめはしません。
.rhostsでrootをオープンにすることのリスクと危険性を十分に理解したうえで慎重に使用してください。
非常に丁寧にご回答頂き、ありがとうございました。
あとは、1の方との安全性と比べて、実装したいと思います。
sshを使った方法は他の方が答えていますので別の方法。
サーバということなのでもしかしたらIPMIが利用できるかもしれません。
IPMIで遠隔からサーバの電源をオン/オフ
http://dsas.blog.klab.org/archives/50648870.html
DELL サーバで IPMI を使う方法
http://www.sssg.org/blogs/naoya/archives/1228
電源以外にも温度や消費電力を計測する事もできます。(もちろんハードウェアが対応していればですが)
これは便利です。サーバが死んでいる時、リモートで電源がはいるというのは素晴らしいです。
ありがとうございました。この方法であればすぐにできそうです。