home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / bin / poff < prev    next >
Text File  |  1998-06-18  |  2KB  |  54 lines

  1. #!/bin/sh
  2.  
  3. # $Id: poff,v 1.4 1998/05/26 14:46:08 phil Exp $
  4. # Written by Phil Hands <phil@hands.com>, distributed under the GNU GPL
  5.  
  6. SIG=TERM DONE=stopped;
  7.  
  8. getopts rdch FLAG
  9. case $FLAG in
  10.  "r") SIG=HUP  DONE=signalled; shift  ;;
  11.  "d") SIG=USR1 DONE=signalled; shift ;;
  12.  "c") SIG=USR2 DONE=signalled; shift ;;
  13.  "h") cat <<!EOF!
  14. usage: $0 [options] [provider]
  15.  
  16. options:
  17.   -r        cause pppd to drop the line and redial
  18.   -d        toggles the state of pppd's debug option
  19.   -c        cause pppd to renegotiate compression
  20.   -h        this help summary
  21. !EOF!
  22.     exit 1
  23.     ;;
  24. esac
  25.  
  26. PROVIDER=$1
  27.  
  28.  
  29. # Lets see how many pppds are running....
  30. set -- `cat /var/run/ppp*.pid 2>/dev/null`
  31.  
  32. case $# in
  33.   0) # pppd only creates a pid file once ppp is up, so let's try killing pppd
  34.      # on the assumption that we've not got that far yet.
  35.      kill -${SIG} `ps axw | egrep "pppd call [[:alnum:]]+" | grep -v grep | awk '{print $1}'`
  36.      exit 0
  37.      ;;
  38.   1) # If only one was running then it can be killed using the pid
  39.      kill -${SIG} $1
  40.      exit 0
  41.      ;;
  42.   *) # More than one! Aieehh.. We have to use ps to figure it out.
  43.      # If no arguments were specified, then assume the 'provider' default.
  44.      PID=`ps axw | egrep "pppd call ${PROVIDER:-provider}[[:space:]]*\$" | grep -v grep | awk '{print $1}'`
  45.      if [ $PID ]; then
  46.         kill -${SIG} ${PID}
  47.         exit 0
  48.      else
  49.         echo "I could not find a pppd process or provider '${PROVIDER:-provider}'. None ${DONE}"
  50.         exit 1
  51.      fi
  52.      ;;
  53. esac
  54.