]> git.ozlabs.org Git - ppp.git/commitdiff
scripts: Make poff ignore extra arguments to pppd
authorJason St. John <jstjohn@purdue.edu>
Fri, 14 Oct 2011 04:08:14 +0000 (00:08 -0400)
committerPaul Mackerras <paulus@samba.org>
Sun, 20 May 2012 06:48:40 +0000 (16:48 +1000)
This allows /usr/bin/poff to properly end a /usr/sbin/pppd process
that was started with additional arguments.

The problem with the current poff script is on line 93 where the
output of `ps axw` is piped into grep. The current regular expression
that grep searches for prevents the PID of the specified pppd process
from being found, which results in the script failing to terminate the
pppd process. The output of poff in that case would be the following:

/usr/bin/poff: I could not find a pppd process for provider 'cit-vpn'.
None stopped.

The reason for this is that the " *\$" at the end of the regular
expression does not match the output of the following example from `ps
axw`:

11846 ?        Ss     0:00 /usr/sbin/pppd call cit-vpn updetach persist

To resolve this issue, I removed the troublesome part of the regular
expression (" *\$") and now grep can properly match the example output
provided above.

I have tested this using ppp 2.4.5-2 in conjunction with
pptpclient-1.7.2-3 on Arch Linux x86_64.

Signed-off-by: Paul Mackerras <paulus@samba.org>
scripts/poff

index 659bfa7f8000291880e25bce4b6f791c945f78e8..3f55a7f40010db8d976d71fb454da725feef4edd 100644 (file)
@@ -91,7 +91,7 @@ if test "$#" -eq 0 -o "$MODE" = "all" ; then
 fi
 
 # There is an argument, so kill the pppd started on that provider.
-PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'`
+PID=`ps axw | grep "[ /]pppd call $1" | awk '{print $1}'`
 if test -n "$PID" ; then
     $KILL -$SIG $PID || {
         echo "$0: $KILL failed.  None ${DONE}."