Aunque usted pueda seguir conectándose a mano tal y como se mostró antes, es mucho mejor configurar algunos scripts que permitan hacer esto automáticamente.
Un conjunto de scripts automatiza la conexión y el arranque de PPP de manera que todo lo que tenga que hacer (como root o como miembro del grupo PPP) es ejecutar una única orden que inicie su conexión.
Si su ISP no necesita el uso de PAP/CHAP, estos son los scripts para usted.
Si el paquete ppp está instalado correctamente, debería tener dos ficheros
de ejemplo. Para PPP 2.1.2 están situados en /usr/sbin
y para PPP 2.2 están en /etc/ppp/scripts
. En Red Hat Linux se
encuentran en el subdirectorio /scripts del directorio de documentación del
paquete ppp (/usr/doc/ppp-x.x.x/
) Se denominan
en PPP-2.1.2
ppp-on
ppp-off
en PPP-2.2 o superiores
ppp-off
ppp-on
ppp-on-dialer
Ahora, si utiliza PPP 2.1.2, le recomiendo que borre los ficheros de ejemplo. Hay grandes problemas potenciales con ellos - (y no me diga que funcionan bien). Yo los usé durante años (incluso los recomendaba en las primeras versiones de este documento COMO).
Para el beneficio de los usuarios PPP 2.1.2, aquí dejo disponibles versiones de plantilla MEJORES, tomadas de la distribución PPP 2.2. Le sugiero que los copie y utilice estos scripts en lugar de los antiguos scripts de PPP-2.1.2.
Este es el primero de un PAR de scripts que inicializan la conexión.
#!/bin/sh # # El script para iniciar la conexión PPP. Esta es la primera parte del # par de scripts. No es un par de scripts seguro ya que los códigos son # visibles con la orden 'ps'. Sin embargo, es simple. # # Estos son los parámetros. Modifíquelos según lo necesite. TELEPHONE=555-1212 # El número de teléfono para la conexión ACCOUNT=george # La cuenta de acceso para la conexión PASSWORD=gracie # La clave para esta cuenta de acceso LOCAL_IP=0.0.0.0 # Dirección IP local, si se conoce. Dinámica = 0.0.0.0 REMOTE_IP=0.0.0.0 # Dirección IP remota, si desea. Usualmente = 0.0.0.0 NETMASK=255.255.255.0 # La máscara de red si es necesaria # # Exportar las necesarias para que esten disponibles por 'ppp-on-dialer' export TELEPHONE ACCOUNT PASSWORD # # Esta es la parte del script que marca el teléfono y se conecta. Por favor, # utilice el nombre de fichero absoluto ya que la variable $PATH no se usa # la opción de conexión. (Hacer esto con una cuenta de root sería un agujero # de seguridad). # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # Iniciar la conexión # # exec /usr/sbin/pppd debug /dev/ttySx 38400 \ $LOCAL_IP:$REMOTE_IP \ connect $DIALER_SCRIPT
Este es el código del script ppp-on-dialer:-
#!/bin/sh # # Esta es la segunda parte del script ppp-on. Realiza el protocolo de # conexión para la conexión deseada # /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \ ogin:--ogin: $ACCOUNT \ assword: $PASSWORD
Para PPP-2.2, el script ppp-off
tiene este aspecto:-
#!/bin/sh ############################################################## ######## # # Determina el dispositivo a finalizar # if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi ############################################################## ######## # # Si el fichero pid de ppp0 está presente cuando el programa se ejecuta, # pararlo. if [ -r /var/run/$DEVICE.pid ]; then kill -INT `cat /var/run/$DEVICE.pid` # # Si la detención no funcionó entonces no había ningún proceso ejecutándose # con ese pid. Puede también significar que el fichero de bloqueo # permanecerá. Puede desear eliminar el fichero de bloqueo al mismo tiempo. if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERROR: Eliminado fichero de bloqueo huérfano" exit 1 fi # # Exito. Hagamos que pppd quite sus cosas de enmedio. echo "Enlace PPP a $DEVICE finalizado." exit 0 fi # # El proceso ppp no está ejecutándose para ppp0 echo "ERROR: El enlace PPP no está activo para $DEVICE" exit 1
Ya que los nuevos scripts vienen en dos partes, los editaremos por turnos.
Necesitará editar el script para que refleje SU nombre de usuario en su ISP, SU contraseña en su ISP y el número de teléfono de su ISP.
Cada una de las líneas como TELEPHONE=
realmente establecen variables
que contienen la información a la derecha de '=' (excluyendo los
comentarios, por supuesto). Edite cada uno de esos ficheros para que sea
correcto para su ISP y conexión.
Así mismo, como usted configura la dirección IP (si necesita hacerlo) en el
fichero /etc/ppp/options
, BORRE la línea que dice
$LOCAL_IP:$REMOTE_IP \
También, asegúrese de que la variable DIALER_SCRIPT apunta a la ruta y
nombre completos del script de marcado que realmente va a utilizar. Por
tanto, si ha movido o renombrado este script, asegúrese de que edita esta
línea correctamente en el script ppp-on
.
Este es el segundo de los scripts que arranca la conexión ppp
Nota: un script chat suele escribirse en una sola línea. Las barras inversas se emplean para permitir continuaciones a lo largo de varias líneas física (para permitir legibilidad humana) y no forman parte del script mismo.
Sin embargo, es muy util mirarlo en detalle para que entendamos qué es lo que (se supone que) hace.
Un script chat es una secuencia de parejas "
cadena esperada
"
"
cadena enviada"
.
En particular, fíjese que SIEMPRE esperamos algo antes de
enviar nada.
Si vamos a enviar algo SIN recibir nada antes, debemos usar una cadena
esperada vacía (indicada por
"
"
) y de manera similar al esperar algo sin
enviar nada. También, si una cadena está formada por varias palabras (como
NO CARRIER), debe entrecomillar la cadena para que sea vista como una sola
por chat.
La línea de chat en nuestra plantilla es:-
exec /usr/sbin/chat -v
Al llamar a chat, la opción -v hace que chat copie toda su I/O al registro del sistema (normalmente /var/log/messages). Una vez que sabe que el script chat funciona bien, edite esa línea para quitar la -v y ahorrar información innecesaria de su syslog.
TIMEOUT 3
ABORT '\nBUSY\r'
Si se recibe la cadena BUSY, abortar la operación.
ABORT '\nNO ANSWER\r'
Si se recibe la cadena NO ANSWER, abortar la operación.
ABORT '\nRINGING\r\n\r\nRINGING\r'
Si se recibe la cadena (repetida) RINGING, abortar la operación. Eso es porque alguien esta llamando a su teléfono.
" \rAT
No esperar nada del módem y enviar la cadena AT.
OK-+++\c-OK ATH0
Esto es algo más complicado ya que utiliza alguna de las capacidades de recogida de errores de chat.
Lo que quiere decir es... Esperar OK. Si no se recibe (porque el módem no está en modo de órdenes) entonces enviar +++ (la cadena que hace que un módem compatible con el estándar Hayes pase a modo de órdenes) y esperar un OK. Entonces enviar ATH0 (el módem descuelga). Esto permite a su script tomar la situación si su modem estaba atascado en línea.
TIMEOUT 30
Ajustar el retardo a 30 segundos para el resto del script. Si experimenta problemas con el script chat que aborta debido a finalizaciones del tiempo de espera, incremente esto a 45 segundos o más.
OK ATDT$TELEPHONE
Esperar OK (la respuesta del módem al comando ATH0) y marcar el número de teléfono al que deseamos llamar.
CONNECT ''
Esperar CONNECT (que es lo que nuestro módem envía cuando el módem remoto contesta) y no enviar nada como respuesta.
ogin:--ogin: $ACCOUNT
De nuevo, tenemos una tecnología de recuperación de errores. Esperamos el la petición de entrada al sistema (...ogin:) pero si no recibimos esto debido a la finalización del tiempo de espera, enviar un retorno de carro y entonces buscar de nuevo la petición de entrada al sistema. Cuando se ésta se reciba, enviar el nombre de usuario (guardado en la variable $ACCOUNT).
assword: $PASSWORD
Esperar la petición de contraseña y enviar nuestra contraseña (otra vez, guardada en una variable).
Este script chat tiene una capacidad razonable de recuperación de errores.
Chat tiene muchas más características que las aquí demostradas. Para más
información consulte la página de manual de chat (man 8 chat
).
Aunque el script ppp-on-dialer es adecuado para los servidores que arrancan automáticamente pppd una vez que usted ha entrado en el sistema, algunos servidores requieren que usted arranque explícitamente PPP.
Si necesita ejecutar una orden para arrancar PPP en el servidor, TAMBIEN necesita editar el script ppp-on-dialer.
Al FINAL del script (después de la línea de contraseña) añada un par adicional esperado enviado - este debería ser como su línea de órdenes (cuidado con los caracteres que tienen un significado especial en el shell Bourne - como el $ y [ o ] (los corchetes).
Una vez que chat haya encontrado la línea de órdenes de su shell, deberá ejecutar la orden que arranque ppp en el servidor PPP de su ISP.
En mi caso, mi servidor PPP utiliza la línea de órdenes estándar de Bash para Linux
[hartr@kepler hartr]$
y requiere que teclee
ppp
para arrancar PPP en el servidor.
Es una buena idea permitir aquí una recuperación de errores, por lo que en mi caso utilizo
hartr--hartr ppp
Esto es, si no recibo la línea de órdenes en el tiempo del retardo, envío un retorno de carro y busco de nuevo la línea de órdenes.
Una vez que se recibe la línea de órdenes, envío la cadena ppp
.
Nota: no olvide añadir una \ al final de la línea anterior para que chat todavía piense que el script chat está en una sola línea.
Desafortunadamente, algunos servidores producen un juego muy variable de líneas de órdenes. Puede que necesite conectar muchas veces utilizando minicom para comprender qué sucede y escoger las cadenas "esperadas" estables.
Si su ISP utiliza PAP/CHAP, su script chat es mucho más simple. Todo lo que el script chat debe hacer es marcar el teléfono, esperar la conexión y dejar que pppd maneje la entrada en el sistema.
#!/bin/sh # # Esta es la segunda parte del script ppp-on. Realiza el protocolo de # conexión para la conexión deseada. # exec /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \
debug
y file fichero_opciones
Como ya hemos visto, puede conectar la información de registro de depuración si arranca pppd con la opción -d. La opción "debug" es equivalente a esta.
Ya que estamos estableciendo una nueva conexión con un nuevo script, deje la opción de depuración por ahora. (Atención: si tiene poco espacio en el disco duro, registrar los intercambios de pppd puede hacer ampliar su fichero de registro de sistema y meterle en problemas - pero para hacerlo debe fallar su conexión y seguir intentándolo durante bastantes minutos).
Una vez que usted sabe que todo funciona adecuadamente, usted puede eliminar esta opción.
Si ha llamado a su fichero de opciones ppp de alguna manera distinta a
/etc/ppp/options
o /etc/ppp/options.ttySx
, especifique el
nombre de fichero a pppd con la opción file
.
exec /usr/sbin/pppd debug file options.miservidor /dev/ttyS0 38400 \