Использование pppd в качестве сервера



/etc/ppp/options должен содержать примерно следующее:

crtscts                    # Hardware flow control

netmask 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 machine

domain ppp.foo.com         # your domain

passive                    # wait for LCP

modem                      # modem line

Следующий скрипт /etc/ppp/pppserv укажет pppd работать в качестве сервера:

#!/bin/sh

ps ax |grep pppd |grep -v grep

pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`

if [ "X${pid}" != "X" ] ; then

   echo 'killing pppd, PID=' ${pid}

   kill ${pid}

fi

ps ax |grep kermit |grep -v grep

pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`

if [ "X${pid}" != "X" ] ; then

   echo 'killing kermit, PID=' ${pid}

   kill -9 ${pid}

fi

 

# reset ppp interface

ifconfig ppp0 down

ifconfig ppp0 delete

 

# enable autoanswer mode

kermit -y /etc/ppp/kermit.ans

 

# run ppp

pppd /dev/tty01 19200

Используйте этот скрипт /etc/ppp/pppservdown для остановки сервера:

#!/bin/sh

ps ax |grep pppd |grep -v grep

pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`

if [ "X${pid}" != "X" ] ; then

   echo 'killing pppd, PID=' ${pid}

   kill ${pid}

fi

ps ax |grep kermit |grep -v grep

pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`

if [ "X${pid}" != "X" ] ; then

   echo 'killing kermit, PID=' ${pid}

   kill -9 ${pid}

fi

ifconfig ppp0 down

ifconfig ppp0 delete

 

kermit -y /etc/ppp/kermit.noans

Следующий kermit скрипт (/etc/ppp/kermit.ans) включит/отключит режим ответа модема на входящие звонки. Он должен выглядеть примерно так:

set line /dev/tty01

set speed 19200

set file type binary

set file names literal

set win 8

set rec pack 1024

set send pack 1024

set block 3

set term bytesize 8

set command bytesize 8

set flow none

 

pau 1

out +++

inp 5 OK

out ATH0\13

inp 5 OK

echo \13

out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable

           ; autoanswer mode

inp 5 OK

echo \13

exit

Скрипт, называющийся /etc/ppp/kermit.dial, используется для дозвона и аутентификации на удаленном хосте. Вам потребуется приспособить его под собственные нужды. Поместите ваш логин и пароль в этот скрипт; вам также потребуется изменить операторы input в зависимости от ответов от модема и удаленного хоста.

;

; put the com line attached to the modem here:

;

set line /dev/tty01

;

; put the modem speed here:

;

set speed 19200

set file type binary       ; full 8 bit file xfer

set file names literal

set win 8

set rec pack 1024

set send pack 1024

set block 3

set term bytesize 8

set command bytesize 8

set flow none

set modem hayes

set dial hangup off

set carrier auto           ; Then SET CARRIER if necessary,

set dial display on        ; Then SET DIAL if necessary,

set input echo on

set input timeout proceed

set input case ignore

def \%x 0                  ; login prompt counter

goto slhup

 

:slcmd                     ; put the modem in command mode

echo Put the modem in command mode.

clear                      ; Clear unread characters from input buffer

pause 1

output +++                 ; hayes escape sequence

input 1 OK\13\10           ; wait for OK

if success goto slhup

output \13

pause 1

output at\13

input 1 OK\13\10

if fail goto slcmd         ; if modem doesn't answer OK, try again

 

:slhup                     ; hang up the phone

clear                      ; Clear unread characters from input buffer

pause 1

echo Hanging up the phone.

output ath0\13             ; hayes command for on hook

input 2 OK\13\10

if fail goto slcmd         ; if no OK answer, put modem in command mode

 

:sldial                    ; dial the number

pause 1

echo Dialing.

output atdt9,550311\13\10          ; put phone number here

assign \%x 0               ; zero the time counter

 

:look

clear                      ; Clear unread characters from input buffer

increment \%x              ; Count the seconds

input 1 {CONNECT }

if success goto sllogin

reinput 1 {NO CARRIER\13\10}

if success goto sldial

reinput 1 {NO DIALTONE\13\10}

if success goto slnodial

reinput 1 {\255}

if success goto slhup

reinput 1 {\127}

if success goto slhup

if < \%x 60 goto look

else goto slhup

 

:sllogin                   ; login

assign \%x 0               ; zero the time counter

pause 1

echo Looking for login prompt.

 

:slloop

increment \%x              ; Count the seconds

clear                      ; Clear unread characters from input buffer

output \13

;

; put your expected login prompt here:

;

input 1 {Username: }

if success goto sluid

reinput 1 {\255}

if success goto slhup

reinput 1 {\127}

if success goto slhup

if < \%x 10 goto slloop    ; try 10 times to get a login prompt

else goto slhup            ; hang up and start again if 10 failures

 

:sluid

;

; put your userid here:

;

output ppp-login\13

input 1 {Password: }

;

; put your password here:

;

output ppp-password\13

input 1 {Entering SLIP mode.}

echo

quit

 

:slnodial

echo \7No dialtone. Check the telephone line!\7

exit 1

 

; local variables:

; mode: csh

; comment-start: "; "

; comment-start-skip: "; "

; end:


Дата добавления: 2018-10-26; просмотров: 166; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!