# 4.5. Script de Conexión

Editar Script

  Usa este cuadro para construir un script de llamada a tu ISP. Usa el mini-terminal y la información suministrada por tu ISP para entender que secuencia de acciones se tiene que ejecutar.

  - Expect: Kppp esperará recibir la siguiente cadena.

  - Send: Kppp envía la cadena especificada.

  - Scan: Kppp buscará en la cadena entrante la buscada y guardará cualquier caracter después de la cadena hasta el comienzo de una nueva linea en el buffer interno. Los espacios en blanco se quitarán.

  - Save: guarda permanentemente las cadenas encontradas en el registro especificado. Así, la el único registro válido es 'password'.

  - Pause: pausa de un determinado número de segundos.

  - Hangup: Kppp enviará el comando de colgar al modem.

  - Answer: Kppp hará entrar al modem en el modo de respuesta.

  - Timeout: cambia el "timeout" por defecto por el número de segundos especificado dinámicamente durante la ejecución del script. Puedes cambiar el timeout varias veces durante la conexión si es necesario.

  - Prompt: Pide al usuario del Kppp que introduzca una cadena, se da una cadena como pista. El usuario verá lo que se teclea. Si la cadena incluye la marca ##, la marca será reemplazada por el contenido actual del buffer interno.

  - PWPrompt: Pide al usuario del Kppp que introduzca una cadena, se da una como pista. Se verá un asterisco por cada carácter tecleado.

  - ID: Si el campo ID en el menú principal del Kppp se rellena envia ese ID. Si el campo ID no esta relleno pedirá al usuario que teclee un ID, dando uno como pista. El usuario vera lo que se teclea. En un segundo pase, como en bucle, en la segunda iteración, se mostrará una pregunta, dando la cadena especificada como pista.

  - Password: Si el campo de contraseña en el menú principal del Kppp no está vacía enviará esta contraseña. Si el campo está vacío, pedirá al usuario del Kppp que introduzca una contraseña, se da una como pista. Se verá un asterisco por cada carácter pulsado y se pedirá la contraseña dos veces. En un segundo pase, como en bucle, en la segunda iteración, se mostrará una pregunta, dando la cadena especificada como pista.

  - LoopStart: Kppp esperará a que se reciba la cadena especificada. Guardará la cadena para ser usada por "LoopEnd".

  - LoopEnd: Kppp esperará recibir la cadena especificada para salir del bucle. Si la cadena dada por el correspondiente LoopStart es recibida primero, desencadenará un salto a la línea siguiente a LoopStart, habilitando la repetición de los cuadros del estilo de Nombre de usuario / contraseña.

## 4.5.1. Scripts de ejemplo

Aquí hay un script simple que podría usar para conectar con mi ISP:

     Expect      ID:                        # espera por el ID:
     Send        myid                       # tienes que sustituir myid por tu ID
     Expect      word:                      # espera a 'password'
     Send        4u3fjkl                    # envía mi contraseña '4u3fjkl'
     Expect      granted                    # Mi ISP envía 'Permission granted' cuando la conexión tiene éxito.
     Send        ppp                        # Esto comienza la conexión por mi en
     				       # el lado del ISP

Aqui el script de la misma conexión con petición de ID y contraseña: Este script pedirá el ID y la contraseña cada vez, no importa que esté escrito en los campos ID y contraseña del menú principal del Kppp. Este script también muestra la estructura de LoopStart/LoopEnd. Si algo va mal durante la conexión. por ejemplo que me equivoque al introducir la contraseña, mi ISP imprimirá un mensaje de error y recomenzará el bucle /id/contraseña mostrando la cadena "ID:" otra vez. Si la cadena "ID" es recibida antes de la palabra de LoopEnd, Kppp recomenzará el script después de la palabra de LoopStart.

     Prompt      Enter ID:                  # me pide mi ID y lo envía.
     Expect      word:                      # espera 'password'
     PWPrompt    Enter Password:            # Me pide mi contraseña y la envía.
     LoopEnd     granted                    # Mi ISP envía 'Permission granted'
     				       # si la conexión tiene éxito.
     Send        ppp                        # Empieza la conexión ppp por mi.

Aquí el script que actualmente uso para conectar con mi ISP: Este script pedirá el ID y la contraseña solo si no has rellenado los campos respectivos en el menú principal de Kppp

     LoopStart   ID:                        # espera ID:
     ID          Enter ID:                  # Me pide el ID y lo envía.
     Expect      word:                      # espera 'password'
     Password    Enter Password             # Me pide la contraseña y la envía.
     LoopEnd     granted                    # Mi ISP envía 'Permission granted'
     				       # si la conexión tiene éxito.
     Send        ppp                        # Empieza la conexión ppp por mi.
                                            # en el ISP.

El log siguiente muestra el procedimiento de entrada a un ISP ficticio que proporciona una contraseña nueva para cada conexión. La nueva contraseña ha de ser verificada y guardada para la próxima sesión.

     University of Lummerland

     Login:mylogin
     Password:
     La contraseña para tu próxima conexión es YLeLfkZb
     Por favor guardela y tecleela para su verificación.
     Verificación:YLeLfkZb

     1 = telnet
     2 = SLIP
     3 = PPP

     Tu elección:

Kppp puede ser usado para ese tipo de tareas (eliminando el riesgo)

     Expect      Login:                     # espera la petición de login
     ID                                     # envía ID
     Expect      Password:                  # espera la petición de contraseña
     Password                               # envía contraseña
     Scan        is:                        # espera '... next session is:' y
                                            # recoge la clave siguiente
     Save        password                   # guarda la contraseña para la próxima.
     login
     Expect      Verification:              # espera 'Verification:'
     Password                               # envía nueva clave
     Expect      choice:                    # espera la petición para elegir

                                            # entre diferentes opciones (telnet,
     SLI
     Send        3                          # elige 3, Ej. PPP