2008/1/4 金曜日

ネットワークインターフェースを自動再起動するシェルスクリプト

Filed under: djb, shellscript — admin @ 1:56:16

原因不明のネットワークインターフェース不良でサーバーにアクセスできなくなってしまう現象が頻繁に発生。
syslogに何も書かれてない。ディスプレイにも何も書かれてない。kernel panicでもないから
kernelの設定でrebootするようになっていても再起動されないという。
さぁ、困ったという状態になっていた。

直前に中国からssh portに怪しいアクセスが見られるから、多分
DOS攻撃くらったとかそのせいかと思う。
というか、このサーバーだけiptablesで中国・韓国を遮断してないんだった。
これはあとで設定するとして

daemontoolsを用いて、ネットワークインターフェースの再起動を
行うスクリプトを書いてみた。

daemontoolsってプロセスの監視ツールだけど、こういった
簡単な監視プログラムを作るのにも使えるよ。

内容はルーターにpingを打って、failしたらネットワークインターフェースをリブートするって仕様。
別にcronでもいいじゃんというのはおいておいてください。
ムリクリdjbを使うことに意味があるのです。

#!/bin/sh 

exec 2>&1 

if ping -c 5 10.0.0.1; then
    echo "success"
  else
    echo "fail"
    /etc/sysconfig/network-scripts/ifdown eth0
    /etc/sysconfig/network-scripts/ifup   eth0
fi 

sleep 10
No Tags