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!

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:

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
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 Trümper <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:

Fine del PPP-over-minicom mini-HOWTO

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