wvdial
로 인터넷 접속하기
SuSE Linux: 버전 6.3
/sbin/init.d/wvdial.dod
파일로 저장합니다.
파일 권한을 변경시켜 실행할 수 있도록 합니다.
chmod 744 /sbin/init.d/wvdial.dod
In -s /sbin/init.d/wvdial.dod /sbin/wvdial.dod
wvdial.dod start [subsection ...]
여기서 서브섹션은 디폴트 인터넷 제공자가 아닌 제공자의 파라미터 섹션 이름을 말합니다.
이것은 선택 사항입니다. wvdial의 맨페이지(man wvdial)에서는 여러 제공자들을 사용하는
데 대한 정보가 들어 있습니다.
스크립트는 루트 유저만이 시작할 수 있지만 모든 사용자가 인터넷 연결을 사용할 수 있습
니다.
wvdial.dod
를 다시 시작합니다.wvdial.dod
종료ln -s /sbin/init.d/wvdial.dod /sbin/init.d/rc2.d/S20wvdial.dod
ln -s /sbin/init.d/wvdial.dod /sbin/init.d/rc3.d/S20wvdial.dod
ln -s /sbin/init.d/wvdial.dod /sbin/init.d/rc2.d/K20wvdial.dod
ln -s /sbin/init.d/wvdial.dod /sbin/init.d/rc3.d/K20wvdial.dod
/etc/wvdial.conf
는 다음 옵션으로 확장될 수 있습니다.
Remote IP=nnn.nnn.nnn.nnn
Idle=n
Defaultroute=yes|no
Important: /etc/wvdial.conf
에서 세미 콜론(;)으로 시작되는 라인들은
/sbin/init.d/wvdial.dod
스크립트 실행시 사용되지 않을 수 있습니다.
_
#! /bin/bash # # Copyright (c) 1999 SuSE GmbH Nuernberg, Germany. All rights reserved. # # # parameters # start section section section # restart section section section # start or restart the daemon with parameters found in /etc/wvdial.conf # section is the name of a section in the /etc/wvdial.conf file # (see man wvdial) # stop # stop the pppd # hangup # hang up the telephone line# additional Parameters in /etc/wvdial.conf could be # Idle: sets the idle-time for waiting before hang up (deafult 180s) # Remote IP: remote IP-address (default 192.168.99.99) # Local IP: local IP-address (default 192.168.99.1) # Defaultroute: no: pppd will not set the default route to the remote ip # (default yes)
function log() { # logs the messages to system log HEAD=$0[$$] echo $MESSAGE logger -t $HEAD "$MESSAGE" }
function setpppdparam() { # time to sleep for pppd to come up WAITFORPPPD=2 CONFFILE="/etc/wvdial.conf" TMPFILE="/tmp/wvdial.dod.tmp" # extract subsection cat /etc/wvdial.conf | sed -n "/Dialer.*$SECTION/{:x;p;n;/Dialer/q;bx}" > $TMPFILE VALUE=`cat $TMPFILE | grep "Modem" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Modem=$VALUE; fi VALUE=`cat $TMPFILE | grep "Baud" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Baud=$VALUE; fi VALUE=`cat $TMPFILE | grep "Username" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Username=$VALUE; fi VALUE=`cat $TMPFILE | grep "Remote IP" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Remote_IP=$VALUE; fi VALUE=`cat $TMPFILE | grep "Local IP" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Local_IP=$VALUE; fi VALUE=`cat $TMPFILE | grep "Idle" | cut -f2 -d"="` if [ ! -z "$VALUE" ]; then Idle=$VALUE; fi VALUE=`cat $TMPFILE | grep "Defaultroute" | cut -f2 -d"="` if [ X$VALUE = XNo -o X$VALUE = XNO -o X$VALUE = Xno ]; \ then DEFAULTROUTE="nodefaultroute"; fi rm -f $TMPFILE }
function killpppd() { if [ -e $PIDFILE ]; then MESSAGE="killing pppd process " PID=`cat $PIDFILE` MESSAGE=$MESSAGE"PID=$PID" log kill -15 $PID 2>/dev/null #kill -9 $PID 2>/dev/null rm $PIDFILE fi }
function startpppd() { # set defaults, no defaults for # Username, Modem, Baud Local_IP="192.168.99.1" Remote_IP="192.168.99.99" Idle=180 DEFAULTROUTE="defaultroute"
# get params from section "Dialer Default" SECTION=Defaults setpppdparam
# parse given section ([Dailer xxx]) parameters while [ ! -z $1 ]; do SECTION=$1 setpppdparam shift done
# start pppd in demand mode PPPPDPARAMS="$Local_IP:$Remote_IP $Modem $Baud modem crtscts $DEFAULTROUTE -detach user $Username ipcp-accept-local ipcp-accept-remote call wvdial demand idle $Idle" MESSAGE="starting pppd $PPPPDPARAMS connect \"/usr/bin/wvdial --chat $WVPARAMS\"... " pppd $PPPPDPARAMS connect "/usr/bin/wvdial --chat $WVPARAMS" &>/dev/null & PPPDPID=$! echo $PPPDPID > $PIDFILE MESSAGE=$MESSAGE"PID=$PPPDPID" log # setting dynamic - parameter for ppp - device
# waiting pppd to come up sleep $WAITFORPPPD ls /var/run/ppp?.pid | while read PIDFILE ; do if [ X$PPPDPID = X`cat $PIDFILE` ]; then DEVICE=`echo $PIDFILE | cut -c 10-13` MESSAGE="setting $DEVICE dynamic " ifconfig $DEVICE dynamic ifconfig $DEVICE | grep "DYNAMIC" -q RES=$? if [ $RES -gt 0 ]; then MESSAGE=$MESSAGE"failed" exit 1 fi MESSAGE=$MESSAGE"done" log fi done exit 0 }
# main LINKNAME=dod PIDFILE=/var/run/pppd.$LINKNAME.pid ACTION=$1 shift WVPARAMS=$@
case "$ACTION" in start) # make sure to start even when uncleanly stopped killpppd netstat --inet -p startpppd $@ netstat --inet -p ;; stop) # handle stop killpppd exit 0 ;; reload|restart) killpppd startpppd $@ ;; hangup) if [ -e $PIDFILE ]; then MESSAGE="hangup pppd connection " PID=`cat $PIDFILE` MESSAGE=$MESSAGE"PID=$PID" log kill -SIGHUP $PID #2>/dev/null exit 0 fi MESSAGE="no pppd connection" log exit 1 ;; # status) # ;; *) echo "Usage: /sbin/init.d/wvdial.dod {start [section [section [..]]]|hangup|stop|restart}" exit 1 ;; esac