전 이것 저것 생각하기 귀차나서..
간단하게 허접 스크립트를 짜서 쓰고 있었는데여..
#!/bin/sh
while [ 1 ]
do
check=`ps aux | grep pppd | wc -l`
echo $check
if [$check -lt 2 ]
then echo pppd dead
pppoed
else echo pppd ok
fi
sleep 60
done
그냥.. 어쩌다 테스트 삼아 뚝딱 하구 만든건데..
조잡해도.. 돌아가긴 잘 돌아가네여.. :(
(어짜피 머리 나뿌고 게을러서 간단한 소스 가지고 최적화니 머니 신경 안씁니다. -.-)
잘 돌아가지라도 않으면.. 다른 좋은 방법들로 교체 할건데.. 헤헤. :)
그리고 채윤기님 사이트는 코넷 과의 문제(?) 로..
아래 사이트로 옮긴듯 합니다.
http://tulbo.homeip.net/adsl/ 그럼 좋은 팁들 감사 드립니다.. ^^ (왜 진작에 이런 생각을 못했을
까.. -.-a) : 아래와 같이 할 경우 일정 시간마다 체크해서 끊어졌을 경우 다시 접속하죠?
: 이 방법을 사용하면 끊어질때마다 바로바로 다시 접속해줍니다.
:
: 1. /etc/ppp/options 파일에 다음을 추가해줍니다.
: nodetach
:
: 2. 다음과 같은 스크립트를 만듭니다.
: #!/bin/sh
: while true
: do
: pppd eth0 > /dev/null
: done &
:
: 끝입니다. 만들어준 스크립트를 실행해주면 됩니다.
:
: /etc/ppp/options 파일에 nodetach를 추가해주면, pppd를 실행하고나서
: 접속이 끊길때까지 프롬프트가 다시 뜨지 않습니다. 즉, 포그라운드로 돌아갑니다.
: 따라서 위와같은 스크립트를 돌려도 접속이 끊길때까지 pppd를 다시 실행하지 않게 됩니
: 다. 접속이 끊기면 자동으로 다시 접속하구요.
: 물론 어떤 방법으로 접속하느냐에 따라서 스크립트에서 pppd eth0
: 라고 적어놓은 부분에 들어갈 내용이 바뀌겠죠.
: 위의 예는 커널 2.4와 PPPOE패치된 PPPD를 이용할 경우입니다.
:
: 데비안을 사용하는 경우 스크립트를 /etc/ppp/ppp_on_boot 라는 이름으로
: 만들어두기만 하면 부팅시 자동으로 접속됩니다.
:
: 유용하게 쓰시기 바랍니다.
: 그럼..
:
: :
: : 본 스크립트는 채윤기님의 adsl 접속 스크립과 같이 돌아가야 한다.
: : 채윤기님의 adsl 접속 스크립트를 구할 수 있는 곳
: : 채윤기님 홈페이지 : http://soback.kornet.nm.kr/~eezen/ : :
: : 전에 아래 스크립을 채윤기님 페이지에서 본거 같은데 못찾겠군요.
: :
: : 1. 아래 스크립을 각각의 디렉토리로 갖다 둡니다.
: : 2. root의 crontab -e 로 일정 시간에 한번씩 체크하도록 해줍니다.
: : ex> */5 * * * * /usr/local/sbin/ifstat
: : 3. root로 touch /var/log/adsl.log 를 만들어 준다.
: : 4. 참고로 /tmp/ifstating 이 adsl이 연결되어있는가를 확인하는 동안에
: : 생성되는 화일입니다. 끝나면 알아서 지워줍니다.
: : 혹시라도 저 화일 때문에 스크립트가 잘못 돌아가는 일이 있을 겁니다.
: : 수동으로 돌릴 시에는 꼭 ifk 를 돌려주세요.
: :
: : ==== /etc/rc.d/rc.adslconnect ====
: : #!/bin/sh
: :
: : ifconfig eth0 down
: : sleep 1
: :
: : #ifconfig eth1 down
: : sleep 1
: : ifconfig eth0 0.0.0.0 mtu 1462 up
: :
: : #ifconfig eth0 mtu 1462 up -arp -broadcast
: : sleep 1
: : ifconfig eth1 192.168.1.1 mtu 1462 up
: : sleep 2
: : /usr/local/sbin/pppoed -I eth0 -d 7
: :
: : ==== /usr/local/sbin/ifstat ====
: : #!/bin/sh
: : # 작성자 : Embryo at hitel.net : : # 수정자 : seha
: : # File Name:/usr/local/sbin/ifstat
: : # Log File : /var/log/adsl.log
: : # Date : 2000. 11. 06.
: : #
: : # 채윤기님의 rc.adslconnect와 함께 돌려서 ppp 접속이 끊겼을 경우에 재접속을 해준다.
: : # root의 cron에 알맞는 시간으로 돌리도록 한다.
: : #
: : # MYSO의 경우 pppd 연결시 나오는 remote IP 값으로 정해준다.
: : #
: : MYSO='211.196.65.18' # KORNET 지역 ROUTER ADDR. 혜화
: : PING_STATUS="`ping -c 3 211.196.65.18 | grep max | awk -F "/" '{print $4}'`" # ping avg
: : PSTAT="`ping -c 5 ${MYSO} | egrep -c time`" #ping status
: : echo "ping status = ${PSTAT}"
: :
: : if [ -f /tmp/ifstating ]; then
: : #ifstat이 실행중일 경우에는 건너뛴다!
: : echo "`date +%T_%Y%m%d_%a` : ifstat is running already" >> /var/log/adsl.log
: : else
: : # ping 이 1000을 넘어가거나 응답이 없는 경우 재접속 시도.
: : if [ ${PING_STATUS} > 1000 ] || [ ${PSTAT} != 5 ]; then
: : `touch /tmp/ifstating`
: : while [ ${PSTAT} = 0 ]; do
: : echo "`date +%T_%Y%m%d_%a` : ADSL connection is not available" >> /var/l
: og/adsl.log : `/sbin/ifconfig ppp0 down `
: : `killall -9 pppoed`
: : `killall -9 pppd`
: : sleep 60
: : `/etc/rc.d/rc.adslconnect` #adsl 연결 스크립
: : echo "`date +%T_%Y%m%d_%a` : Tring to connect ADSL" >> /var/log/adsl.log
: : sleep 10
: :
: : PSTAT="` ping -c 5 ${MYSO} | egrep -c time `" #ping status
: : if [ ${PSTAT} = 0 ]; then
: : echo "`date +%T_%Y%m%d_%a` : Cauld Not Connect ADSL" >> /var
: /log/adsl.log : echo
: : else
: : echo "`date +%T_%Y%m%d_%a` : Re-connected ADSL" >> /var/log/
: adsl.log : echo
: : fi
: : done
: : `rm -f /tmp/ifstating`
: :
: : else
: : `rm -f /tmp/ifstating`
: : fi
: : echo "`date +%T_%Y%m%d_%a` : ADSL connection is available" >> /var/log/adsl.log
: : fi
: :
: : ==== /usr/local/sbin/ifk ====
: : #!/bin/sh
: : `killall -9 ifstat`
: : `rm -rf /tmp/ifstating`
: :
: :
: :
: : ps. 흥주야 잘 보아라 -_-;
: :
: : --
: : <p align="right">
: : - your theatre, since 1976
: : </p>
--
Mins