PPP-over-minicom mini-HOWTO
Winfried Tr�mper (
[email protected])
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:
� "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
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 <
[email protected]>
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 (
[email protected])