PPP-over-minicom mini-HOWTO

Winfried Trümper ( winni@xpilot.org ) v0.2 01 Maggio 1998

Desiderate controllare il PPP utilizzando una utility controllata da un menù? Un database facile ma potente con i numeri di telefono del vostro ISP? Volete vedere cosa succede quando vi loggate? Allora questo mini-HOWTO è per voi!

Indice

1 Introduzione 1 1.1 Il programma terminale minicom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Commenti e critiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Bug conosciuti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Effettuare una chiamata con minicom 2 2.1 Configurare minicom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Far partire PPP manualmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Valutare i file di log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.4 Configurare un numero telefonico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.5 Uno script di login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.6 Connessione automatizzata alla partenza di minicom . . . . . . . . . . . . . . . . . . . . . . . 5 2.7 Estensioni future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1 Introduzione

PPP è diventato il protocollo standard per collegarsi ad internet tramite connessione dialup. Il demone associato pppd comprende una utility molto primitiva per il collegamento, che gestisce bene solamente configurazioni molto semplici. Questo mini-HOWTO descrive una soluzione alternativa basata su minicom.

1.1 Il programma terminale minicom

minicom è un programma molto complicato per collegarsi ad altri computer (ISP o BBS). Ha un menù colorato, un database delle connessioni dialup e un potente linguaggio di scripting. Così viene idealmente adattato per l’uso in congiunzione con pppd.

1.2 Commenti e critiche

Sono solamente interessato a commenti e critiche che possano migliorare questo mini-HOWTO. Non risponderò a domande generali su Linux, PPP, SLIP o networking.

1.3 Bug conosciuti

Al tempo della scrittura, sembrava che ci fossero alcuni bug in minicom, runscript e il metodo descritto sotto:

• runscript non aspetta che i programmi esterni finiscano

          print "blah"
          ! sleep 10
          print "blup"

Questo script esce immediatamente (ma non quando lo si analizza tramite strace...)

• pppd si impossessa del dispositivo seriale negandolo a minicom (quando non alimentato da stdin) Sembra che Miquel van Smoorenburg (l’autore di minicom) sia troppo occupato per mettersi a lavorare sul problema di cui sopra. Indi per cui volontari sono benvenuti.

2 Effettuare una chiamata con minicom

Molte guide su PPP raccomandano di lasciare minicom dopo che è stato usato per collegarsi. Ma non c’è in realtà alcuna ragione per lasciare questo confortevole programma...

2.1 Configurare minicom

Eseguite minicom -s e scegliete dal menù la voce Serial port setup. La prima voce dovrebbe essere Serial Device. Questa è l’opzione più importante: il dispositivo seriale a cui è collegato il vostro modem. (Qualche volontario per fare in modo che minicom gestisca più dispositivi seriali alla volta?)

Per avere il nome del file del dispositivo, al quale è collegato il vostro modem, digitate i seguenti commandi:

     for i in 0 1 2 3
     do
       if (chat -v -t 5 "" ATZ "" \\d "" ATZ OK "" > /dev/ttyS$i < /dev/ttyS$i)
       then
          echo "Modem in /dev/ttyS$i (= COM$[$i+1] sotto DOS)"
       else
          echo "Nessun Modem trovato in ttyS$i."
       fi
     done

Il codice sopra assicura che il modem sia configurato correttamente. Alcune persone hanno problemi con i modem plug-and-play, il che dimostra che plug-and-play è più che una lite di mercato.

Adesso provate a comporre un numero col comando atdt5 (dt sta per componi usando il metodo a toni). Se non sentite un dialtone, controllate i cablaggi. Il vostro modem protesterà con il messaggio no dialtone e annullerà il comando. Se il vostro sistema telefonico non ha un dialtone, potete voler dirlo al vostro modem con x3, perciò il comando da provare è atx3dt5.

Se ottenete il dialtone, ma la composizione non ha effetto, allora potete riprovare con il metodo pulse dialing (usate dp invece del dt di prima). In ogni caso, premete la barra spazio per interrompere l’ultimo comando.

Prendete nota del comando che ha successo. Infine andate su Modem and dialing parameter setup in minicom e modificate Dialing prefix per adattarvi ai vostri bisogni. Potete inserire l0m0 direttamente dopo AT per spegnere lo speaker prima di prendere la linea telefonica.

2.2 Far partire PPP manualmente

Può darsi che abbiate già provato a comporre il numero telefonico del vostro ISP invece di 5. Avete visto caratteri divertenti sullo schermo dopo il login (altrimenti, digitate ppp)? Risultano dal pppd (o equivalente) fatto partire all’altra parte della linea. Se è così, potete provare a far partire il pppd daemon sul vostro sistema e poi valutare i file di log.

Per far partire pppd dentro minicom, potete definire un nuovo metodo di upload (capite da soli come) o ridefinire l’opzione kermit program dal menù di configurazione Filename and paths:

     A - Download directory :
     B -   Upload directory :
     C -   Script directory :
     D -     Script program : /usr/bin/runscript
     E -     Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options

Adesso se vedete quei caratteri divertenti la prossima volta che vi collegate al vostro ISP potete premere <Alt-K> per far partire pppd.

Il resto di questo mini-HOWTO si occupa di automatizzare il processo di login e di partenza di pppd.

2.3 Valutare i file di log

Sebbene io non voglia spiegare come PPP deve essere configurato, do un breve consiglio su come leggere il file di log. Per estrarre le informazioni essenziali dal file di log /var/log/debug (o l’altervativo /var/log/daemon.log) eseguite i comandi

     tail -n 40  /var/log/debug |\
             grep -E " pppd\[[0-9]*\]:" |\
             sed -e "s/^.*pppd\[/[/"

Dovreste vedere messaggi del tipo

     sent [LCP ConfReq id=0x1 <mru 296>]
     rcvd [LCP ConfRej id=0x1 <mru 296>]

che indicano che abbiamo spedito una config-request per configurare la maximum receive unit a 296. L’altro lato rifiuta questa opzione (configuration rejected). In questo caso ho solamente rimosso l’opzione mru da /etc/ppp/options (vedete sotto).

2.4 Configurare un numero telefonico

Se ciò che abbiamo visto sopra ha avuto successo, potete voler immagazzinare un numero telefonico nel database di minicom. Premete <Alt-D> per vedere il menù di composizione e usate i tasti cursore per selezionare Edit:

     A -  Name                : Xeno
     B -  Number              : 022039697303
     C -  Dial string #       : 1
     D -  Local echo          : No
     E -  Script              : /etc/ppp/login.script
     F -  Username            : ppp-382

2. Effettuare una chiamata con minicom 4

G -  Password            : top-secret
H -  Terminal Emulation  : VT102
I -  Backspace key sends : Delete
J -  Linewrap            : Off
K -  Line Settings       : Curr 8N1

Questa è una entry di esempio per collegarmi a uno dei miei ISP. Lo script /etc/ppp/login.script viene mostrato sotto. Due variabili speciali sono passate a questo script: $(LOGIN) e $(PASS) che sono impostate ai valori scelti per username (F) e password (G). Questa caratteristica rende minicom piuttosto flessibile perché avete bisogno di un solo script per automatizzare il vostro login a molti ISP.

2.5 Uno script di login

minicom fa partire lo script di login dopo che riceve la stringa CONNECT. Ad essere precisi, minicom non esegue lo script da solo ma chiama l’utility runscript come sottoprocesso.

Sotto c’è un esempio, è quello che uso per i miei ISP.

# v1.0, 20.08.96 Winfried Truemper <winni@xpilot.org>
print ""
print "Automatic login via /etc/ppp/login.script"
## uncomment if you need to press enter to get the prompt
#send ""
expect {
"ogin:"
"ogin>"
"sername:"
"sername>"
"NO CARRIER" exit 1
}
send "$(LOGIN)"
expect {
        "assword:"
        "assword>"
        timeout 20
}
send "$(PASS)"
expect {
        "port"  send "ppp"
        "Start your PPP now"
        "}!}!}"
        timeout 10
}
print ""
print "Now switching into ppp-mode ..."
print ""
! /usr/sbin/pppd  file /etc/ppp/mini_options
print ""
print "the command   killall -TERM pppd   terminates pppd"

La capacità di runscript di chiamare programmi esterni è usata per far partire pppd. Copiate il vostro file di opzioni per ppp in /etc/ppp/options.ttyS1 (dove dovete sostituire ttyS1 col dispositivo a cui il vostro modem è connesso) e cancellate tutte le linee da /etc/ppp/options che sono specifiche per il vostro modem (come connect, crtscts o modem). Mettete le opzioni che dovrebbero essere specifiche alla connessione ppp con minicom in /etc/ppp/mini_options. Una di queste opzioni dovrebbe essere

     disconnect "chat '' '\d\d+++\d\dATH\r\c'"

Questo è un must perché pppd è alimentato dallo standard input e non può scollegare il modem con crtscts. Ecco il mio /etc/ppp/mini_options:

     debug
     -detach
     defaultroute
     netmask 255.255.255.0
     mru 1500
     mtu 1500
     asyncmap 00000000
     disconnect "chat '' '\d\d+++\d\dATH\r\c'"

2.6 Connessione automatizzata alla partenza di minicom

Usate l’opzione -d per comporre un certo numero telefonico all’avvio di minicom. Potete anche provare

     open -sl -- minicom -d 1

Per mettere minicom su un’altra console (consultate il Consoles-Many mini-HOWTO per i dettagli).

2.7 Estensioni future

Poiché pppd è un demone non è stato designato per interagire con l’utente o essere osservato. In questo modo è ok. Dopo tutto, stiamo usando un sistema operativo unix-like...

La soluzione canonica è un backend. C’è qualche volontario per lavorare a questo per minicom? Delle estensioni carine potrebbero essere:

• generazione automatica della script di login guardando l’utente che si collega manualmente

• valutazione automatica del file di log con la correzione delle opzioni

• estrazione di messaggio come mostrato in 2.3.

Fine del PPP-over-minicom mini-HOWTO

Traduzione italiana a cura di Nicola Girardi ( girardi@keycomm.it )