#!/bin/sh # # ppp-on -- start a PPP session, with any other necessary actions # exit status sts=0 # setup default script location and file extensions if [ -z $ppppth ]; then # note: don't quote ppppth; otherwise shell expansions # may not work quite right. ppppth=~/.ppp fi if [ -z $diaxtn ]; then diaxtn="chat" fi if [ -z $pppxtn ]; then pppxtn="ppp" fi # help function function prthlp() { echo "" echo "usage: $0 [-v] [-c] []" echo "" echo "open ppp link. if is specified, use a 'chat' script" echo "called $ppppth/.$diaxtn to make the dialup " echo "connection; otherwise, we expect the dialup connection to already " echo "be made. see chat(1) for format of chat scripts." echo "" echo "options:" echo "-v verbose operation; logs chat to system log." echo "-c connect script; perform script after ppp connected. " echo " if is specified, perform " echo " $ppppth/.$pppxtn, otherwise" echo " perform $ppppth/default.$pppxtn." echo "" } # option defaults # -v => verbose chat operation opt_vrbopr="" # yes => perform connect script opt_scpflg="no" # various options for i in $*; do case $i in -v | --verbose) opt_vrbopr="-v" shift ;; -c | --connect) opt_scpflg="yes" shift ;; -h | --help) prthlp exit 0 ;; *) break ;; esac done # if this script is run with an argument, use that # as the basename for the dialing and connect scripts; # otherwise, use default values. if [ -z $1 ]; then diaflg="no" diacmd="" cnnscp="$ppppth/default.$pppxtn" else diaflg="yes" diascp="$ppppth/$1.$diaxtn" diacmd="chat $opt_vrbopr -f $diascp" cnnscp="$ppppth/$1.$pppxtn" fi # delay to allow for connection cnndly="5s" # connection device and speed pppdev=/dev/modem pppspd=38400 # this is the command we use to start the ppp daemon pppcmd="pppd $pppdev $pppspd" # this function starts up ppp function pppstu() { if $pppcmd; then # sleep for a little bit to give ppp time to connect sleep $cnndly echo "ppp connected." if [ $opt_scpflg = "yes" ]; then ( # perform user- or connection-specific actions # upon successful ppp connection if [ -x $cnnscp ]; then sleep $cnndly $cnnscp fi ) & fi else echo "error: ppp not connected." sts=1 fi } # dial if requested and then start pppd echo "opening ppp connection over $pppdev ... " if [ "$diaflg" = "yes" ]; then # we're dialing first, then starting ppp echo -n "dialing $1 ... " if $diacmd <$pppdev >$pppdev; then echo "connected." pppstu else echo -e "\nerror: dialing failed." sts=1 fi else # we're not dialing; just start ppp pppstu fi exit $sts