Parts originally contributed by Gennady B. Sorokopud 和 Robert Huff.
Based on information provided by Trev Roydhouse.
下面这个 /etc/ppp/options
选项文件能够被用来与CISCO终端服务器的
PPP线连接。
crtscts # enable hardware flow controlmodem # modem control linenoipdefault # remote PPP server must supply your IP address # if the remote host does not send your IP during IPCP # negotiation, remove this optionpassive # wait for LCP packetsdomain ppp.foo.com # put your domain name here:remote_ip # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ipdefaultroute # put this if you want that PPP server will be your # default router
连接:
使用 Kermit (或其他 modem
程序来拨号), 然后输入您的用户名和口令
(或在远程主机上启用 PPP 所需的其他信息)。
退出 Kermit (并不挂断连接)。
键入下面这行:
# /usr/sbin/pppd /dev/tty01 19200
一定要使用正确的速度和设备名。
现在您的计算机已经用PPP连接。 如果连接失败,
您可在文件 /etc/ppp/options
中添加
debug
选项, 并查看控制台信息以跟踪问题。
下面这个/etc/ppp/pppup
脚本能自动完成这三个步骤:
#!/bin/shpgrep -l pppdpid=`pgrep pppd`if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid}fipgrep -l kermitpid=`pgrep kermit`if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid}fiifconfig ppp0 downifconfig ppp0 deletekermit -y /etc/ppp/kermit.dialpppd /dev/tty01 19200
/etc/ppp/kermit.dial
是一个 Kermit
脚本, 它会完成拨号, 并在远程主机上完成所有需要的身份验证过程
(这份文档的最后有一个脚本实例)。
使用下面这个脚本/etc/ppp/pppdown
断开PPP连线:
#!/bin/shpid=`pgrep pppd`if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid}fipgrep -l kermitpid=`pgrep kermit`if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid}fi/sbin/ifconfig ppp0 down/sbin/ifconfig ppp0 deletekermit -y /etc/ppp/kermit.hup/etc/ppp/ppptest
通过执行/usr/etc/ppp/ppptest
,
看看pppd
是否仍在运行:
#!/bin/shpid=`pgrep pppd`if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE}else echo 'No pppd running.'fiset -xnetstat -n -I ppp0ifconfig ppp0
执行脚本
/etc/ppp/kermit.hup
以挂起moderm, 这个文件包含:
set line /dev/tty01 ; put your modem device hereset speed 19200set file type binaryset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8set flow nonepau 1out +++inp 5 OKout ATH0\13echo \13exit
也可以用chat
代替kermit
:
以下两个文件用以建立pppd
连接。
/etc/ppp/options
:
/dev/cuad1 115200crtscts # enable hardware flow controlmodem # modem control lineconnect "/usr/bin/chat -f /etc/ppp/login.chat.script"noipdefault # remote PPP serve must supply your IP address # if the remote host doesn't send your IP during # IPCP negotiation, remove this optionpassive # wait for LCP packetsdomain your.domain # put your domain name here: # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ipdefaultroute # put this if you want that PPP server will be # your default router
/etc/ppp/login.chat.script
:
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id TIMEOUT 5 sword: password
一旦这些被安装且修改正确, 您所要做的就是运行pppd
, 就像这样:
# pppd
/etc/ppp/options
要包括下面这些内容:
crtscts # Hardware flow controlnetmask 255.255.255.0 # netmask (not required)192.114.208.20:192.114.208.165 # IP's of local and remote hosts # local ip must be different from one # you assigned to the Ethernet (or other) # interface on your machine. # remote IP is IP address that will be # assigned to the remote machinedomain ppp.foo.com # your domainpassive # wait for LCPmodem # modem line
下面这个脚本/etc/ppp/pppserv
使pppd以服务器方式启动:
#!/bin/shpgrep -l pppdpid=`pgrep pppd`if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid}fipgrep -l kermitpid=`pgrep kermit`if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid}fi# reset ppp interfaceifconfig ppp0 downifconfig ppp0 delete# enable autoanswer modekermit -y /etc/ppp/kermit.ans# run ppppppd /dev/tty01 19200
使用脚本/etc/ppp/pppservdown
停止服务器:
#!/bin/shpgrep -l pppdpid=`pgrep pppd`if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid}fipgrep -l kermitpid=`pgrep kermit`if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid}fiifconfig ppp0 downifconfig ppp0 deletekermit -y /etc/ppp/kermit.noans
下面的 Kermit 脚本
(/etc/ppp/kermit.ans
) 能够启用/禁用您 modem
的自动应答模式。 其内容类似下面这样:
set line /dev/tty01set speed 19200set file type binaryset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8set flow nonepau 1out +++inp 5 OKout ATH0\13inp 5 OKecho \13out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable ; autoanswer modeinp 5 OKecho \13exit
一个名为/etc/ppp/kermit.dial
的脚本用于向远程主机
进行拨号和验证。 您要根据需要定制它。 要加入您的登寻名和密码,
您还要根据 modem 和远程主机的反应修改输入语句。
;; put the com line attached to the modem here:;set line /dev/tty01;; put the modem speed here:;set speed 19200set file type binary ; full 8 bit file xferset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8set flow noneset modem hayesset dial hangup offset carrier auto ; Then SET CARRIER if necessary,set dial display on ; Then SET DIAL if necessary,set input echo onset input timeout proceedset input case ignoredef \%x 0 ; login prompt countergoto slhup:slcmd ; put the modem in command modeecho Put the modem in command mode.clear ; Clear unread characters from input bufferpause 1output +++ ; hayes escape sequenceinput 1 OK\13\10 ; wait for OKif success goto slhupoutput \13pause 1output at\13input 1 OK\13\10if fail goto slcmd ; if modem doesn't answer OK, try again:slhup ; hang up the phoneclear ; Clear unread characters from input bufferpause 1echo Hanging up the phone.output ath0\13 ; hayes command for on hookinput 2 OK\13\10if fail goto slcmd ; if no OK answer, put modem in command mode:sldial ; dial the numberpause 1echo Dialing.output atdt9,550311\13\10 ; put phone number hereassign \%x 0 ; zero the time counter:lookclear ; Clear unread characters from input bufferincrement \%x ; Count the secondsinput 1 {CONNECT }if success goto slloginreinput 1 {NO CARRIER\13\10}if success goto sldialreinput 1 {NO DIALTONE\13\10}if success goto slnodialreinput 1 {\255}if success goto slhupreinput 1 {\127}if success goto slhupif < \%x 60 goto lookelse goto slhup:sllogin ; loginassign \%x 0 ; zero the time counterpause 1echo Looking for login prompt.:slloopincrement \%x ; Count the secondsclear ; Clear unread characters from input bufferoutput \13;; put your expected login prompt here:;input 1 {Username: }if success goto sluidreinput 1 {\255}if success goto slhupreinput 1 {\127}if success goto slhupif < \%x 10 goto slloop ; try 10 times to get a login promptelse goto slhup ; hang up and start again if 10 failures:sluid;; put your userid here:;output ppp-login\13input 1 {Password: };; put your password here:;output ppp-password\13input 1 {Entering SLIP mode.}echoquit:slnodialecho \7No dialtone. Check the telephone line!\7exit 1; local variables:; mode: csh; comment-start: "; "; comment-start-skip: "; "; end: