Я свій колбек реалізував так:
Надаю перелік файлів з їх вмістимим:
root@my-linux / # cd /etc/ppp
root@my-linux ppp # cat chat-default
# /etc/ppp/chat-default:
# $Header: /var/cvsroot/gentoo-x86/net-dialup/ppp/files/chat-default,v 1.2 2004/07/18 03:50:48 dragonheart Exp $
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO ANSWER'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT$NUMBER'
'CONNECT' ''
'TIMEOUT' '5'
'~--' ''
root@my-linux ppp # cat dialcb
#!/bin/bash
# 20041218 hse@ukr.net GPL-2
# ppp install path:
cfpath=/usr/local/sbin
while [ 1=1 ]; do
echo "===> killing pppd"
for i in `ps -e |grep ppp |awk '{print $1}'`
do
kill -9 $i >/dev/null
done
echo "===> Starting pppd"
$cfpath/pppd call cb >/tmp/ppp.tmp
cat /tmp/ppp.tmp
case "`cat /tmp/ppp.tmp`" in
"Connect script failed")
echo "===> Connection rstart"
;;
"`cat /etc/ppp/^NRequest`")
echo "===> You have bad chap-secrets, pap-secrets, or you account is disabled"
exit 0
;;
"`cat /tmp/ppp.tmp`")
echo "===> Waiting for incoming call"
sleep 1
$cfpath/pppd call cbanswer >/tmp/ppp.tmp
case "`cat /tmp/ppp.tmp`" in
"Connect script failed")
echo "===> Connection rstart";
;;
"`cat /tmp/ppp.tmp`")
echo "===> Connection terminated"
exit 0
;;
esac
;;
esac
sleep 2
done
root@my-linux ppp # cat dialcb.ch
REPORT CONNECT
ABORT BUSY
ABORT "NO CARRIER"
ABORT ERROR
ABORT "NO DIALTONE"
""
"ATZ"
TIMEOUT 5
OK
#"ATM3L1&I0"
#TIMEOUT 5
#OK
ATDP5380100
TIMEOUT 60
CONNECT
root@my-linux ppp # cat dialcbanswer.ch
REPORT CONNECT
ABORT BUSY
ABORT "NO CARRIER"
ABORT ERROR
ABORT "NO DIALTONE"
""
"ATZ"
TIMEOUT 5
OK
"ATM3L1&I0&N82"
TIMEOUT 5
OK
""
TIMEOUT 50
RING
ATA
TIMEOUT 30
CONNECT
root@my-linux ppp # cat options
lock
root@my-linux ppp # cat peers/cb
/dev/modem 115200 crtscts
connect '/usr/local/sbin/chat -f /etc/ppp/dialcb.ch -r /var/log/chat.report'
lock
passive
ipcp-accept-local
ipcp-accept-remote
bsdcomp 15
defaultroute
usepeerdns
noauth
user surfcb
callback 02
))
-detach
#receive-all
root@my-linux ppp # cat peers/cbanswer
/dev/modem 115200 crtscts
noauth
connect '/usr/local/sbin/chat -f /etc/ppp/dialcbanswer.ch -r /var/log/chat.report'
lock
#debug
crtscts
mtu 1500
mru 1500
passive
ipcp-accept-local
ipcp-accept-remote
bsdcomp 15
deflate 15
idle 300
defaultroute
usepeerdns
name surfcb
-detach
#receive-all
root@my-linux ppp # cat ^NRequest
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/modem
CHAP authentication failed: ^NRequest Denied
Connection terminated.
root@my-linux ppp # cat chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"surfcb" * "max"
root@my-linux ppp #
Уважно перечитай скріпти і конфіги-треба буде дещо поправити (свій номер телефону, телефон провайдера, логін і пароль, стрічки ініціалізації модема...)
Для початку цього має вистарчити:-)
І НАЙГОЛОВНІШЕ перекомпілити ппп з підтримкою колбек!!!
root@my-linux ppp # cd /usr/src/ppp-2.4.3/
root@my-linux ppp-2.4.3 # cat README.cbcp
..................................
To enable CBCP support, all that is required is to uncomment the line
in Makefile.linux that sets CBCP=y and recompile pppd.
...................................
У файлі Makefile.linux треба опції CBCP присвоїти значення "y":
CBCP=y
Зверни увагу на версію ппп-2.4.3 в інших версіях може не бути всіх опцій!!!
Брати ппп тут:
ftp://ftp.samba.org/pub/ppp/
Будуть питання пиши...