LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 947|回复: 5

poff 脚本的源代码是什么???

[复制链接]
发表于 2007-3-4 16:55:25 | 显示全部楼层 |阅读模式
poff 脚本的源代码是什么???
发表于 2007-3-4 17:08:27 | 显示全部楼层
emacs /usr/bin/poff
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-4 17:26:16 | 显示全部楼层
我没有装Debian 麻烦把代码贴出来好吗。。 急急急急。。。
回复 支持 反对

使用道具 举报

发表于 2007-3-4 17:48:43 | 显示全部楼层
下载ppp包的源代码好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-4 18:11:38 | 显示全部楼层
在网上查找了 找不到 郁闷。。。 我只要一小小段代码。。。
回复 支持 反对

使用道具 举报

发表于 2007-3-4 22:54:03 | 显示全部楼层
#!/bin/sh

# $Id: poff,v 1.8 1999/08/28 16:34:51 phil Exp $
# Written by John Hasler <john@dhh.gt.org> and based on work
# by Phil Hands <phil@hands.com>.  Distributed under the GNU GPL

if [ -x /usr/bin/kill ]; then
  KILL="/usr/bin/kill"
else
  KILL="/bin/kill"
fi
SIG=TERM
DONE="stopped"
MODE=""

usage ()
{
   cat <<!EOF!
usage: $0 [option] [provider]
options:
  -r        Cause pppd to drop the line and redial.
  -d        Toggle the state of pppd's debug option.
  -c        Cause pppd to renegotiate compression.
  -a        Stop all pppd's.  'provider' will be ignored.
  -h        Print this help summary and exit.
  -v        Print version and exit.
  none      Stop pppd.

Options may not be combined.

If 'provider' is omitted pppd will be stopped or signalled if and only if
there is exactly one running unless the '-a' option was given.  If
'provider' is supplied the pppd controlling the connection to that
provider will be stopped or signalled.
!EOF!
}

# Get option.  If there are none replace the "?" that getopts puts in
# FLAG on error with "null".
getopts rdcavh FLAG
if [ "$?" -ne 0 ]; then
    FLAG="null"
fi

# Check for additional options.  Should be none.
getopts :rdcavh DUMMY
if [ "$?" -eq 0 ]; then
    echo "$0: Illegal option -- ${OPTARG}."
    exit 1
fi

case $FLAG in
"r") SIG=HUP;  DONE=signalled; shift ;;
"d") SIG=USR1; DONE=signalled; shift ;;
"c") SIG=USR2; DONE=signalled; shift ;;
"a") MODE="all"; shift ;;
"v") echo "$0$Revision: 1.8 $_TrickToPrint_RCS_Revision"; exit 0 ;;
"h") usage; exit 0 ;;
"?") exit 1;
esac

# Get the PIDs of all the pppds running.  Could also get these from
# /var/run, but pppd doesn't create .pid files until ppp is up.
PIDS=$(pidof pppd)

# poff is pointless if pppd isn't running.
if [ -z "$PIDS" ]; then
    echo "$0: No pppd is running.  None ${DONE}."
    exit 1
fi

# Find out how many pppd's are running.
N=$(echo "$PIDS" | wc -w)

# If there are no arguments we can't do anything if there is more than one
# pppd running.
if [ "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ]; then
    echo "$0: More than one pppd running and no "-a" option and
no arguments supplied. Nothing ${DONE}."
    exit 1
fi

# If either there are no arguments or '-a' was specified kill all the
# pppd's.
if [ "$#" -eq 0 -o "$MODE" = "all" ]; then
    $KILL -$SIG $PIDS || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
    exit 0
fi

# There is an argument, so kill the pppd started on that provider.
PEER=$(echo $1 | sed -e 's#/#\\/#g')
PID=$(ps -o pid,cmd axw | awk "/^ *[0-9]* *(\/usr\/sbin\/)?pppd call $PEER( |\$)/ {print \$1}")

if [ "$PID" ]; then
    $KILL -$SIG $PID || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
else
   echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}."
   exit 1
fi

exit 0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表