DTCP daemontools化

feel6.jpなんかは DTCP クライアントでIPv6トンネリング接続を行なう。 DTCPクライアントがたまに切れることがある。あるいは、ルーティングテーブル が消えて外と通信できなくなったりする。監視して繋ぎ直したい。そんなときは、

ぽんっ

daemontoolsじゃな。

PPPoEをリセットしたりしてIP的に切れたときはDTCPがすぐに 繋げないことがある。ので、DTCP接続に失敗したらしばらく休憩するように runスクリプトを工夫。
/service/dtcp/run

#!/bin/sh
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
ifconfig インターフェース inet6 v6アドレス prefixlen 64
if [ -f brake ]; then
	sleep 10
	rm -f brake
fi
touch brake
(sleep 10; rm -f brake)&
exec 2>&1
exec env - PATH=$PATH \
ruby dtcpc.rb -n -s 25 -t network -u yuuji -i gif1 DTCPサーバ

まれにだが、dtcpが生きていてもv6的に切れる場合に備え 監視して、切れてたら dtcpc を起動し直すスクリプト。
/service/dtcp-keep/run

#!/bin/sh
if=gif1

# /service/dtcpが上がるのをまつ
sleep 20
target=`ifconfig $if | awk '/tunnel inet/{print $NF}'`
echo $target

pcheck () {
  # 念のため3回ping。1回でも成功すれば良いとする。
  ping -c 1 -w 2 $target || \
  ping -c 1 -w 2 $target || \
  ping -c 1 -w 2 $target
}

while pcheck > /dev/null 2>&1
do
  sleep 20
done
svc -t /service/dtcp

Generated with mkdiary.rb
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]