#!/bin/sh # ## ~/ppp-connetti ## ## Attiva la connessione al proprio ISP attraverso pppd e ## chat. ## ## Questo script è molto semplificato rispetto a quelli ## standard. Il problema sta nel fatto che molto dipende da ## come si comporta l'elaboratore dell'ISP. ## In questo esempio, in particolare, alla fine dello script ## di chat viene inviato un ritorno a carrello senza il ## quale la connessione non avviene. ## ## Si presume che la connessione avvenga utilizzando ## l'interfaccia «ppp0». ## ## Perché possa essere utilizzato da un utente comune, ## occorre che tale utente possa accedere alla porta seriale ## del modem e che il programma «pppd» sia SUID-root. ## ## Questo script non utilizza alcun argomento dalla riga di ## comando. # # ## ## Variabili. ## # # # Indirizzo dell'ISP. # In teoria non è necessario indicare l'indirizzo IP # dell'elaboratore remoto. Tuttavia, se non dovesse # funzionare, c'è sempre la possibilità di inserirlo qui. # IP_ISP="0.0.0.0" # # Indirizzo del proprio elaboratore. # L'indirizzo IP del proprio elaboratore non deve essere # indicato, a meno che non sia stato deciso diversamente con # il proprio ISP. Infatti, di solito viene assegnato # l'indirizzo locale in maniera dinamica. # IP_LOCALE="0.0.0.0" # # La porta di comunicazione utilizzata per il modem. # In questo caso è la seconda porta seriale. # DISPOSITIVO="/dev/ttyS1" # # Velocità massima di trasmissione. # VELOCITA="57600" # # Il numero di telefono dell'ISP. # TELEFONO="0987654321" # # Il nominativo utente utilizzato per accedere # all'elaboratore dell'ISP. # PPP_ACCOUNT="tizio" # # La password per accedere. # PPP_PASSWORD="tazza" # ## ## Inizio. ## # # # Prima di iniziare si controlla che non sia già attiva una # connessione con l'interfaccia di rete «ppp0», ovvero # quella di una connessione PPP (precisamente la prima). # È da notare che «ifconfig» potrebbe non trovarsi nel # percorso di ricerca degli eseguibili della variabile PATH, # per cui è necessario indicare il percorso assoluto. # if `/sbin/ifconfig | grep "ppp0" > /dev/null` then # # Esiste già una connessione con «ppp0», quindi non si # può procedere (si interrompe lo script). # echo "È già attiva una connessione con ppp0" exit 1 fi # # Viene attivato pppd con l'aiuto di chat. # In particolare, chat esegue le operazioni seguenti: # - imposta il tempo di attesa a 3 secondi; # - interrompe in caso di messaggio ABORT # - interrompe in caso di messaggio NO CARRIER; # - senza attendere, richiede il prelievo della # configurazione di fabbrica del modem; # - dopo l'OK invia un comando AT nullo (serve per i modem # lenti); # - dopo l'OK invia il comando ATX3 in modo che venga # ignorato il tono di chiamata; # - dopo l'OK invia un comando AT nullo (serve per i modem # lenti); # - dopo l'OK invia la richiesta di composizione del numero # telefonico; # - cambia il tempo di attesa portandolo a 30 secondi; # - attende CONNECT e quindi invia un ritorno a carrello; # - attende la richiesta di login e invia il nome # dell'utente; # - attende la richiesta della password e invia la # password; # - senza attendere invia un ritorno a carrello. # /usr/sbin/pppd \ connect "/usr/sbin/chat -v \ TIMEOUT 3 \ ABORT BUSY \ ABORT 'NO CARRIER' \ '' \\dAT\&F \ OK \\dAT \ OK \\dATX3 \ OK \\dAT \ OK '\\dATDT $TELEFONO' \ TIMEOUT 30 \ CONNECT '' \ ogin:--ogin: $PPP_ACCOUNT \ word: $PPP_PASSWORD \ '' '' " \ crtscts \ modem \ defaultroute \ $IP_LOCALE:$IP_ISP \ $DISPOSITIVO \ $VELOCITA # ## ## Fine. ## #