Conf-network: differenze tra le versioni
(→Requisiti) |
(→Download) |
||
| Riga 25: | Riga 25: | ||
[http://stiiv.netsons.org/modules/wfdownloads/singlefile.php?cid=1&lid=3 Conf-network-v1.0 (home)] |
[http://stiiv.netsons.org/modules/wfdownloads/singlefile.php?cid=1&lid=3 Conf-network-v1.0 (home)] |
||
| + | |||
| + | |||
| + | = Script = |
||
| + | |||
| + | Di seguito è riportato il codice dello script. |
||
| + | |||
| + | Versione 1.0 |
||
| + | |||
| + | <pre> |
||
| + | #!/bin/bash |
||
| + | # Script che aiuta l'utente nella configurazione dei dispositivi di rete |
||
| + | # (sia cablati, sia wireless) |
||
| + | # |
||
| + | # Per quanto riguarda il protocollo WPA-EAP di wpa_supplicant, non ho |
||
| + | # avuto modo di testarlo in quanto non dispongo degli strumenti necessari. |
||
| + | # Il resto dovrebbe funzionare :-) |
||
| + | # |
||
| + | # Script creato il 29/9/2008 da Ansa89 (aka h3r0) |
||
| + | |||
| + | # File di configurazione di wpa_supplicant |
||
| + | CONF_WPA="/root/.wpa_supplicant.conf" |
||
| + | |||
| + | # Funzione per controllare le dipendenze |
||
| + | check_dep () { |
||
| + | |||
| + | # Controllo chi esegue lo script |
||
| + | if [ "$(whoami)" != "root" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi essere ROOT per eseguire questo script!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Controllo se i net-tool sono installati |
||
| + | if [ -z "$(which ifconfig)" -o -z "$(which route)" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi avere installato i NET-TOOL per eseguire questo script!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Controllo se i wireless-tool sono installati |
||
| + | if [ -z "$(which iwlist)" -o -z "$(which iwconfig)" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi avevre installato i WIRELESS-TOOL per eseguire questo script!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Controllo se dhcpcd e' installato |
||
| + | if [ -z "$(which dhcpcd)" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi avere installato DHCPCD per eseguire questo script!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Controllo se wpa_supplicant e' installato |
||
| + | if [ -z "$(which wpa_supplicant)" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi avere installato WPA_SUPPLICANT per eseguire questo script!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | } |
||
| + | |||
| + | # Funzione per impostare le variabili degli eseguibili |
||
| + | utilities () { |
||
| + | IFCONFIG=`which ifconfig` |
||
| + | ROUTE=`which route` |
||
| + | DHCPCD=`which dhcpcd` |
||
| + | IWCONFIG=`which iwconfig` |
||
| + | IWLIST=`which iwlist` |
||
| + | WPA_SUPPLICANT=`which wpa_supplicant` |
||
| + | } |
||
| + | |||
| + | # Funzione per spegnere le interfacce |
||
| + | smorza () { |
||
| + | |||
| + | # Guardo quali interfacce sono accese |
||
| + | if [ -z "$1" ]; then |
||
| + | IF=`$IFCONFIG | grep -v lo | cut -d " " -f 1` |
||
| + | else |
||
| + | IF=$1 |
||
| + | fi |
||
| + | for i in $IF; do |
||
| + | echo -n "Devo spegnere $i? (s/n) " |
||
| + | read risp |
||
| + | if [ -z "$risp" -o "$risp" == "s" ]; then |
||
| + | echo -n "Spengo $i..." |
||
| + | $DHCPCD -k $i &> /dev/null |
||
| + | $IFCONFIG $i down &> /dev/null |
||
| + | echo "Fatto" |
||
| + | echo |
||
| + | |||
| + | # Controllo se e' un'interfaccia wireless |
||
| + | if ! [ -z "$(cat /proc/net/wireless | grep $i)" ]; then |
||
| + | |||
| + | # Chiedo se devo fermare anche wpa_supplicant |
||
| + | echo -n "Fermo anche wpa_supplicant? (s/n) " |
||
| + | read risp |
||
| + | if [ -z "$risp" -o "$risp" == "s" ]; then |
||
| + | killall wpa_supplicant &> /dev/null |
||
| + | kill -9 `ps ux | grep wpa | grep -v grep | cut -d " " -f 7` &> /dev/null |
||
| + | echo "Wpa_supplicant e' stato fermato." |
||
| + | echo |
||
| + | elif [ "$risp" == "n" ]; then |
||
| + | echo |
||
| + | echo "Wpa_supplicant non e' stato fermato." |
||
| + | echo |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | $IWCONFIG $i essid off ap off &> /dev/null |
||
| + | $IWCONFIG $i key off &> /dev/null |
||
| + | $IWCONFIG $i mode managed &> /dev/null |
||
| + | $IFCONFIG $i up |
||
| + | fi |
||
| + | echo |
||
| + | elif [ "$risp" == "n" ]; then |
||
| + | echo "$i non e' stata spenta" |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | done |
||
| + | } |
||
| + | |||
| + | # Funzione per configurare le reti cablate |
||
| + | wired () { |
||
| + | |||
| + | # Controllo il parametro passato allo script |
||
| + | if [ -z "$1" ]; then |
||
| + | |||
| + | # Se non e' stato passato niente cerco le interfacce |
||
| + | echo -n "Cerco le interfacce... " |
||
| + | NUM=`wc -l /proc/net/dev | cut -d " " -f 1` |
||
| + | if [ $NUM -gt 3 ]; then |
||
| + | IF=`tail -n $(($NUM-3)) /proc/net/dev | cut -d " " -f 3 | cut -d ":" -f 1` |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Nessuna scheda ethernet trovata!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Tolgo le interfacce wireless perche' non interessano |
||
| + | if [ -e /proc/net/wireless ]; then |
||
| + | NUM=`wc -l /proc/net/wireless | cut -d " " -f 1` |
||
| + | if [ $NUM -gt 2 ]; then |
||
| + | IF2=`tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1` |
||
| + | OLD_IF=$IF |
||
| + | IF="" |
||
| + | for i in $OLD_IF; do |
||
| + | if [ -z "$(echo $IF2 | grep $i)" ]; then |
||
| + | IF="$IF $i" |
||
| + | fi |
||
| + | done |
||
| + | fi |
||
| + | fi |
||
| + | echo "Fatto" |
||
| + | |||
| + | # Faccio scegliere l'interfaccia |
||
| + | echo "Ho trovato queste intefacce wired:" |
||
| + | for i in $IF; do |
||
| + | IF2=$i |
||
| + | echo $i |
||
| + | done |
||
| + | echo |
||
| + | echo "Quale vuoi usare per la connessione?" |
||
| + | echo -n "($IF2) " |
||
| + | read DEV |
||
| + | if [ -z "$DEV" ]; then |
||
| + | DEV=$IF2 |
||
| + | fi |
||
| + | else |
||
| + | NUM=`wc -l /proc/net/dev | cut -d " " -f 1` |
||
| + | if tail -n $(($NUM-3)) /proc/net/dev | cut -d " " -f 3 | cut -d ":" -f 1 | grep $1 &> /dev/null; then |
||
| + | DEV=$1 |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un'interfaccia valida!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | fi |
||
| + | |||
| + | # Spengo l'interfaccia prima di configurarla (uso la funzione smorza) |
||
| + | smorza $DEV |
||
| + | |||
| + | # Chiedo che tipo di connessione e' |
||
| + | echo -n "Il tuo IP ti viene assegnato da un server DHCP? (s/n) " |
||
| + | read risp |
||
| + | if [ -z "$risp" -o "$risp" == "s" ]; then |
||
| + | |||
| + | # Configurazione rete con IP dinamici |
||
| + | echo "Avvio il demone dhcpcd..." |
||
| + | $DHCPCD -t 20 -d $DEV |
||
| + | sleep 5 |
||
| + | if [ "$(ps aux | grep dhcpcd | wc -l | cut -d " " -f 1)" -gt 1 ]; then |
||
| + | echo "Fatto!" |
||
| + | echo "Hai configurato la tua rete cablata con successo! :-)" |
||
| + | echo |
||
| + | else |
||
| + | echo "Non sono riuscito ad avviare dhcpcd!" |
||
| + | echo "Prova ad eseguire '$DHCPCD -d $DEV' come utente root" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | elif [ "$risp" == "n" ]; then |
||
| + | |||
| + | # Configurazione rete con IP statici |
||
| + | echo -n "Inserisci l'IP per $DEV: " |
||
| + | read IPADDR |
||
| + | if [ -z "$IPADDR" ]; then |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un IP per configurare la scheda!" |
||
| + | exit 1 |
||
| + | fi |
||
| + | echo -n "Inserisci la maschera di rete (255.255.255.0): " |
||
| + | read NETMASK |
||
| + | if [ -z "$NETMASK" ]; then |
||
| + | NETMASK="255.255.255.0" |
||
| + | fi |
||
| + | echo "Inserisci l'IP del broadcast:" |
||
| + | echo -n "(puo' essere lasciato vuoto se si e' incerti) " |
||
| + | read BROADCAST |
||
| + | echo "Inserisci l'IP del gateway:" |
||
| + | echo -n "(necessario per la connessione ad internet attraverso $DEV) " |
||
| + | read GW |
||
| + | echo "Imposto i parametri per $DEV..." |
||
| + | if [ -z "$BROADCAST" ]; then |
||
| + | $IFCONFIG $DEV $IPADDR netmask $NETMASK up |
||
| + | else |
||
| + | $IFCONFIG $DEV $IPADDR netmask $NETMASK broadcast $BROADCAST up |
||
| + | fi |
||
| + | if ! [ -z "$GW" ]; then |
||
| + | $ROUTE add default gw $GW |
||
| + | fi |
||
| + | echo "nameserver 127.0.0.1" > /etc/resolv.conf |
||
| + | echo "Fatto!" |
||
| + | echo "Hai configurato la tua rete cablata con successo! :-)" |
||
| + | echo |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | } |
||
| + | |||
| + | # Funzione per configurare le reti wireless |
||
| + | wireless () { |
||
| + | if [ -z $1 ]; then |
||
| + | echo "Cerco le interfacce..." |
||
| + | if [ -e /proc/net/wireless ]; then |
||
| + | NUM=`wc -l /proc/net/wireless | cut -d " " -f 1` |
||
| + | if [ $NUM -gt 2 ]; then |
||
| + | IF=`tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1` |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Nessuna scheda wireless trovata!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Nessuna scheda wireless trovata!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | echo "Fatto" |
||
| + | echo "Ho trovato queste interfacce wireless:" |
||
| + | for i in $IF; do |
||
| + | IF2=$i |
||
| + | echo $i |
||
| + | done |
||
| + | echo |
||
| + | echo "Quale vuoi usare per la connessione?" |
||
| + | echo -n "($IF2) " |
||
| + | read DEV |
||
| + | if [ -z "$DEV" ]; then |
||
| + | DEV=$IF2 |
||
| + | fi |
||
| + | else |
||
| + | if [ -e /proc/net/wireless ]; then |
||
| + | NUM=`wc -l /proc/net/wireless | cut -d " " -f 1` |
||
| + | if tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1 | grep $1; then |
||
| + | DEV=$1 |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un'interfaccia wireless valida!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | fi |
||
| + | fi |
||
| + | |||
| + | # Spengo l'interfaccia prima di configurarla (uso la funzione smorza) |
||
| + | smorza $DEV |
||
| + | |||
| + | # Cerco le reti wireless |
||
| + | echo "Scanning delle reti con $DEV..." |
||
| + | echo |
||
| + | $IWLIST $DEV scan |
||
| + | echo |
||
| + | echo "Non farti prendere dal panico per l'eventuale eccessiva lunghezza dell'output" |
||
| + | |||
| + | # Incomincio a chiedere i vari parametri |
||
| + | |||
| + | # ESSID |
||
| + | echo -n "cerca la tua rete e inserisci l'ESSID (il nome): " |
||
| + | read ESSID |
||
| + | if [ -z "$ESSID" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome di una rete a cui connettersi!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # CHANNEL |
||
| + | echo -n "Inserisci il channel della rete (non la frequenza!): " |
||
| + | read CHAN |
||
| + | if [ -z "$CHAN" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il canale della rete scelta!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # MODE |
||
| + | echo -n "Inserisci il tipo di rete: managed (con access point) o ad-hoc (senza access point): " |
||
| + | read MODE |
||
| + | if [ -z "$MODE" ]; then |
||
| + | MODE="managed" |
||
| + | fi |
||
| + | |||
| + | # Chiedo se serve la password |
||
| + | echo -n "La rete necessita di password? (s/n) " |
||
| + | read risp |
||
| + | if [ -z "$risp" -o "$risp" == "s" ]; then |
||
| + | |||
| + | # Quale tipo di password? |
||
| + | echo "WEP o WPA?" |
||
| + | echo "(N.B. WPA e' solo per reti con access point!)" |
||
| + | echo -n "(wpa) " |
||
| + | read TYPE |
||
| + | if [ [ -z "$TYPE" -o "$TYPE" == "wpa" -o "$TYPE" == "WPA" ] -a [ "$MODE" == "managed" -o "$MODE" == "Managed"] ]; then |
||
| + | |||
| + | # WPA |
||
| + | echo "Hai scelto WPA" |
||
| + | echo "ctrl_interface=/var/run/wpa_supplicant" > $CONF_WPA |
||
| + | echo "ctrl_interface_group=0" >> $CONF_WPA |
||
| + | echo "eapol_version=1" >> $CONF_WPA |
||
| + | echo "ap_scan=1" >> $CONF_WPA |
||
| + | echo "fast_reauth=1" >> $CONF_WPA |
||
| + | echo "" >> $CONF_WPA |
||
| + | chmod 600 $CONF_WPA |
||
| + | |||
| + | # Chiedo quale tipo di WPA |
||
| + | echo "Che tipo di criptaggio devo usare?" |
||
| + | echo -e "\tWPA-PSK\n\tWPA-EAP\n\tNONE\t(per chiavi WEP)" |
||
| + | read TYPE |
||
| + | case "$TYPE" in |
||
| + | |||
| + | # WPA-PSK |
||
| + | WPA-PSK) |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password: " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PSK |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PSK |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Creo il file di configurazione |
||
| + | echo -n "Creo il file di configurazione..." |
||
| + | echo "network={" >> $CONF_WPA |
||
| + | echo -e "\tscan_ssid=1" >> $CONF_WPA |
||
| + | echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA |
||
| + | echo -e "\tmode=0" >> $CONF_WPA |
||
| + | echo -e "\tproto=WPA WPA2" >> $CONF_WPA |
||
| + | echo -e "\tkey_mgmt=WPA-PSK" >> $CONF_WPA |
||
| + | echo -e "\tpairwise=CCMP TKIP" >> $CONF_WPA |
||
| + | echo -e "\tgroup=CCMP TKIP WEP104 WEP40" >> $CONF_WPA |
||
| + | echo -e "\tpsk=\"$PSK\"" >> $CONF_WPA |
||
| + | echo "}" >> $CONF_WPA |
||
| + | echo "Fatto" |
||
| + | ;; |
||
| + | |||
| + | # WPA-EAP |
||
| + | WPA-EAP) |
||
| + | |||
| + | # Chiedo quale tipo di EAP |
||
| + | echo "Quale tipo di EAP vuoi usare?" |
||
| + | echo -e "\tTLS\n\tPEAP\n\tTTLS" |
||
| + | read TYPE |
||
| + | case "$TYPE" in |
||
| + | |||
| + | # WPA-EAP --> TLS |
||
| + | TLS) |
||
| + | |||
| + | # Chiedo l'identita' |
||
| + | echo -n "Inserisci la tua identita': " |
||
| + | read ID |
||
| + | if [ -z "$ID" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il tuo identificativo per connetterti alla rete!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo il file del certificato |
||
| + | echo "Inserisci il nome del file che contiene" |
||
| + | echo -n "l'autorizzazione del server (comprensivo di path assoluto!): " |
||
| + | read CA |
||
| + | if [ -z "$CA" -o ! -e $CA ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo il file del certificato |
||
| + | echo "Inserisci il nome del file che contiene " |
||
| + | echo -n "il certificato del client (comprensivo di path assoluto!): " |
||
| + | read CLIENT |
||
| + | if [ -z "$CLIENT" -o ! -e $CLIENT ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome del certicficato del tuo client, comprensivo di path assoluto!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo il file della chiave privata |
||
| + | echo "Inserisci il nome del file che contiene" |
||
| + | echo -n "la chiave privata (comprensivo di path assoluto!): " |
||
| + | read KEY |
||
| + | if [ -z "$KEY" -o ! -e $KEY ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome della chiave primaria, comprensivo di path assololuto!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password: " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PASSWD |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PASSWD |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Creo il file di configurazione |
||
| + | echo -n "Creo il file di configurazione..." |
||
| + | echo "network={" >> $CONF_WPA |
||
| + | echo -e "\tscan_ssid=1" >> $CONF_WPA |
||
| + | echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA |
||
| + | echo -e "\tmode=0" >> $CONF_WPA |
||
| + | echo -e "\tproto=WPA WPA2" >> $CONF_WPA |
||
| + | echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA |
||
| + | echo -e "\tpairwise=CCMP TKIP" >> $CONF_WPA |
||
| + | echo -e "\tgroup=CCMP TKIP WEP104 WEP40" >> $CONF_WPA |
||
| + | echo -e "\teap=TLS" >> $CONF_WPA |
||
| + | echo -e "\tidentity=\"$ID\"" >> $CONF_WPA |
||
| + | echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA |
||
| + | echo -e "\tclient_cert=\"$CLIENT\"" >> $CONF_WPA |
||
| + | echo -e "\tprivate_key=\"$KEY\"" >> $CONF_WPA |
||
| + | echo -e "\tprivate_key_passwd=\"$PASSWD\"" >> $CONF_WPA |
||
| + | echo "}" >> $CONF_WPA |
||
| + | echo "Fatto" |
||
| + | ;; |
||
| + | |||
| + | # WPA-EAP --> PEAP |
||
| + | PEAP) |
||
| + | |||
| + | # Chiedo l'identita' |
||
| + | echo -n "Inserisci la tua identita': " |
||
| + | read ID |
||
| + | if [ -z "$ID" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il tuo identificativo per connetterti alla rete!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo il file del certificato |
||
| + | echo "Inserisci il nome del file che contiene" |
||
| + | echo -n "l'autorizzazione del server (comprensivo di path assoluto!): " |
||
| + | read CA |
||
| + | if [ -z "$CA" -o ! -e $CA ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password: " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PASSWD |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PASSWD |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Creo il file di configurazione |
||
| + | echo -n "Creo il file di configurazione..." |
||
| + | echo "network={" >> $CONF_WPA |
||
| + | echo -e "\tscan_ssid=1" >> $CONF_WPA |
||
| + | echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA |
||
| + | echo -e "\tmode=0" >> $CONF_WPA |
||
| + | echo -e "\tproto=WPA WPA2" >> $CONF_WPA |
||
| + | echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA |
||
| + | echo -e "\teap=PEAP" >> $CONF_WPA |
||
| + | echo -e "\tidentity=\"$ID\"" >> $CONF_WPA |
||
| + | echo -e "\tpassword=\"$PASSWD\"" >> $CONF_WPA |
||
| + | echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA |
||
| + | echo -e "\tphase1=\"peaplabel=0\"" >> $CONF_WPA |
||
| + | echo -e "\tphase2=\"auth=MSCHAPV2\"" >> $CONF_WPA |
||
| + | echo "}" >> $CONF_WPA |
||
| + | echo "Fatto" |
||
| + | ;; |
||
| + | |||
| + | # WPA-EAP --> TTLS |
||
| + | TTLS) |
||
| + | |||
| + | # Chiedo l'identita' |
||
| + | echo -n "Inserisci la tua identita': " |
||
| + | read ID |
||
| + | if [ -z "$ID" ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il tuo identificativo per connetterti alla rete!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo l'identita' anonima |
||
| + | echo -n "Inserisci la tua identita' anonima: " |
||
| + | read ANON_ID |
||
| + | |||
| + | # Chiedo il file del certificato |
||
| + | echo "Inserisci il nome del file che contiene" |
||
| + | echo -n "l'autorizzazione del server (comprensivo di path assoluto!): " |
||
| + | read CA |
||
| + | if [ -z "$CA" -o ! -e $CA ]; then |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password: " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PASSWD |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PASSWD |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Creo il file di configurazione |
||
| + | echo -n "Creo il file di configurazione..." |
||
| + | echo "network={" >> $CONF_WPA |
||
| + | echo -e "\tscan_ssid=1" >> $CONF_WPA |
||
| + | echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA |
||
| + | echo -e "\tmode=0" >> $CONF_WPA |
||
| + | echo -e "\tproto=WPA WPA2" >> $CONF_WPA |
||
| + | echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA |
||
| + | echo -e "\teap=TTLS" >> $CONF_WPA |
||
| + | echo -e "\tidentity=\"$ID\"" >> $CONF_WPA |
||
| + | echo -e "\tanonymous_identity=\"$ANON_ID\"" >> $CONF_WPA |
||
| + | echo -e "\tpassword=\"$PASSWD\"" >> $CONF_WPA |
||
| + | echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA |
||
| + | echo -e "\tphase2=\"auth=MD5\"" >> $CONF_WPA |
||
| + | echo "}" >> $CONF_WPA |
||
| + | echo "Fatto" |
||
| + | ;; |
||
| + | |||
| + | # Spazio per gli errori |
||
| + | *) |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un tipo di EAP tra quelli proposti!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | ;; |
||
| + | esac |
||
| + | ;; |
||
| + | |||
| + | # NONE (static WEP) |
||
| + | NONE) |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password in esadecimale (controlla le impostazioni dell'access point): " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PASSWD |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PASSWD |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Creo il file di configurazione |
||
| + | echo -n "Creo il file di configurazione..." |
||
| + | echo "network={" >> $CONF_WPA |
||
| + | echo -e "\tscan_ssid=1" >> $CONF_WPA |
||
| + | echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA |
||
| + | echo -e "\tmode=0" >> $CONF_WPA |
||
| + | echo -e "\tkey_mgmt=NONE" >> $CONF_WPA |
||
| + | echo -e "\twep_tx_keyidx=0" >> $CONF_WPA |
||
| + | echo -e "\twep_key0=$PASSWD" >> $CONF_WPA |
||
| + | echo "}" >> $CONF_WPA |
||
| + | echo "Fatto" |
||
| + | ;; |
||
| + | |||
| + | # Spazio per gli errori |
||
| + | *) |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un tipo di criptaggio tra quelli proposti!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | ;; |
||
| + | esac |
||
| + | |||
| + | # Chiedo che driver deve usare wpa_supplicant |
||
| + | echo "Che driver deve usare wpa_supplicant?" |
||
| + | echo -e "\twext\t(Generic driver)\tDefault" |
||
| + | echo -e "\tralink\t(Ralink driver)" |
||
| + | echo -e "\thostap\t(Prism2/2.5/3 driver)" |
||
| + | echo -e "\tprism54\t(PrismGT/Duette/Indigo driver)" |
||
| + | echo -e "\tmadwifi\t(Atheros driver)" |
||
| + | echo -e "\tatmel\t(Atmel AT76C5XXx driver)" |
||
| + | echo -e "\tipw\t(IntelProWireless 2100/2200 driver)" |
||
| + | echo -e "\tndiswrapper\t(Ndiswrapper driver)" |
||
| + | read DRIVER |
||
| + | if [ -z "$DRIVER" ]; then |
||
| + | DRIVER="wext" |
||
| + | fi |
||
| + | |||
| + | # Imposto i parametri wireless |
||
| + | echo "Setto i parametri wireless per $DEV e avvio wpa_supplicant..." |
||
| + | if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN && $WPA_SUPPLICANT -D$DRIVER -i$DEV -c$CONF_WPA -B ; then |
||
| + | echo "Fatto" |
||
| + | wired $DEV |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | elif [ "$TYPE" == "wep" -o "$TYPE" == "WEP" ]; then |
||
| + | |||
| + | # Se non e' WPA, allora e' WEP |
||
| + | echo "Hai scelto WEP" |
||
| + | |||
| + | # Chiedo la password |
||
| + | echo "Adesso dovrai inserire la password." |
||
| + | echo "Vuoi che i caratteri digitati vengano visualizzati? (s/n) " |
||
| + | read risp |
||
| + | echo -n "Inserisci la password in esadecimale (controlla le impostazioni dell'access point): " |
||
| + | if [ -z "$risp" -o "$risp" == "n" ]; then |
||
| + | read -s PASSWD |
||
| + | elif [ "$risp" == "s" ]; then |
||
| + | read PASSWD |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | # Imposto i parametri wireless |
||
| + | echo "Setto i parametri wireless per $DEV..." |
||
| + | if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN && $IWCONFIG $DEV key $PASSWD ; then |
||
| + | echo "Fatto" |
||
| + | wired $DEV |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo "Devi inserire un tipo di password tra quelli proposti!" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | elif [ "$risp" == "n" ]; then |
||
| + | |||
| + | # La rete wireless non ha bisogno di password |
||
| + | echo "La rete scelta non e' protetta." |
||
| + | |||
| + | # Imposto i parametri wireless |
||
| + | echo "Setto i parametri wireless per $DEV..." |
||
| + | if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN ; then |
||
| + | echo "Fatto" |
||
| + | $IWCONFIG $DEV key off &> /dev/null |
||
| + | wired $DEV |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | else |
||
| + | echo |
||
| + | echo "**ERRORE**" |
||
| + | echo |
||
| + | exit 1 |
||
| + | fi |
||
| + | } |
||
| + | |||
| + | # Controllo le dipendenze |
||
| + | check_dep |
||
| + | |||
| + | # Imposto gli eseguibili |
||
| + | utilities |
||
| + | |||
| + | # Controllo i parametri passati allo script |
||
| + | case "$1" in |
||
| + | "--wired") |
||
| + | wired $2 |
||
| + | exit 0 |
||
| + | ;; |
||
| + | |||
| + | "--wireless") |
||
| + | wireless $2 |
||
| + | exit 0 |
||
| + | ;; |
||
| + | |||
| + | *) |
||
| + | echo |
||
| + | echo "Opzioni valide:" |
||
| + | echo "$0 --wired [dev] --> per configurare reti cablate" |
||
| + | echo "$0 --wireless [dev] --> per configurare reti wireless" |
||
| + | echo -e "\t\t[dev] --> l'interfaccia da usare (opzionale, da usare senza '[]')" |
||
| + | echo |
||
| + | echo "Versione 1.0" |
||
| + | echo "By Ansa89 (http://stiiv.netsons.org)" |
||
| + | echo |
||
| + | exit 1 |
||
| + | ;; |
||
| + | esac |
||
| + | #EOF |
||
| + | </pre> |
||
| + | * Autore: Ansa89 |
||
Versione delle 01:02, 6 nov 2008
Indice |
Descrizione
Questo è il mio secondo script (il primo è stato Compiz-git) e questa volta ero indaffarato nelle configurazioni della mia rete...
Così è nato Conf-ntwork!
Usando questo script anche gli utenti meno esperti potranno configurare la loro rete (wireless o cablata) in pochi passi e senza bisogno dell'interfaccia grafica (dunque è utile se per caso dovete connettervi ad internet proprio per cercare informazioni su come configurare X.org).
Lo script è un po' lungo, ed è stato testato su Slackware 12.1 -- kernel 2.6.26.3 (ma dovrebbe funzionare con qualsiasi distro...).
Requisiti
NET-TOOL --> per i comandi di base
WIRELESS-TOOL --> per configurare le reti wireless
DHCPCD --> per poter ricevere l'ip da un server dhcp
WPA_SUPPLICANT --> wpa_supplicant
Download
Script
Di seguito è riportato il codice dello script.
Versione 1.0
#!/bin/bash
# Script che aiuta l'utente nella configurazione dei dispositivi di rete
# (sia cablati, sia wireless)
#
# Per quanto riguarda il protocollo WPA-EAP di wpa_supplicant, non ho
# avuto modo di testarlo in quanto non dispongo degli strumenti necessari.
# Il resto dovrebbe funzionare :-)
#
# Script creato il 29/9/2008 da Ansa89 (aka h3r0)
# File di configurazione di wpa_supplicant
CONF_WPA="/root/.wpa_supplicant.conf"
# Funzione per controllare le dipendenze
check_dep () {
# Controllo chi esegue lo script
if [ "$(whoami)" != "root" ]; then
echo
echo "**ERRORE**"
echo "Devi essere ROOT per eseguire questo script!"
echo
exit 1
fi
# Controllo se i net-tool sono installati
if [ -z "$(which ifconfig)" -o -z "$(which route)" ]; then
echo
echo "**ERRORE**"
echo "Devi avere installato i NET-TOOL per eseguire questo script!"
echo
exit 1
fi
# Controllo se i wireless-tool sono installati
if [ -z "$(which iwlist)" -o -z "$(which iwconfig)" ]; then
echo
echo "**ERRORE**"
echo "Devi avevre installato i WIRELESS-TOOL per eseguire questo script!"
echo
exit 1
fi
# Controllo se dhcpcd e' installato
if [ -z "$(which dhcpcd)" ]; then
echo
echo "**ERRORE**"
echo "Devi avere installato DHCPCD per eseguire questo script!"
echo
exit 1
fi
# Controllo se wpa_supplicant e' installato
if [ -z "$(which wpa_supplicant)" ]; then
echo
echo "**ERRORE**"
echo "Devi avere installato WPA_SUPPLICANT per eseguire questo script!"
echo
exit 1
fi
}
# Funzione per impostare le variabili degli eseguibili
utilities () {
IFCONFIG=`which ifconfig`
ROUTE=`which route`
DHCPCD=`which dhcpcd`
IWCONFIG=`which iwconfig`
IWLIST=`which iwlist`
WPA_SUPPLICANT=`which wpa_supplicant`
}
# Funzione per spegnere le interfacce
smorza () {
# Guardo quali interfacce sono accese
if [ -z "$1" ]; then
IF=`$IFCONFIG | grep -v lo | cut -d " " -f 1`
else
IF=$1
fi
for i in $IF; do
echo -n "Devo spegnere $i? (s/n) "
read risp
if [ -z "$risp" -o "$risp" == "s" ]; then
echo -n "Spengo $i..."
$DHCPCD -k $i &> /dev/null
$IFCONFIG $i down &> /dev/null
echo "Fatto"
echo
# Controllo se e' un'interfaccia wireless
if ! [ -z "$(cat /proc/net/wireless | grep $i)" ]; then
# Chiedo se devo fermare anche wpa_supplicant
echo -n "Fermo anche wpa_supplicant? (s/n) "
read risp
if [ -z "$risp" -o "$risp" == "s" ]; then
killall wpa_supplicant &> /dev/null
kill -9 `ps ux | grep wpa | grep -v grep | cut -d " " -f 7` &> /dev/null
echo "Wpa_supplicant e' stato fermato."
echo
elif [ "$risp" == "n" ]; then
echo
echo "Wpa_supplicant non e' stato fermato."
echo
else
echo
echo "**ERRORE**"
echo
exit 1
fi
$IWCONFIG $i essid off ap off &> /dev/null
$IWCONFIG $i key off &> /dev/null
$IWCONFIG $i mode managed &> /dev/null
$IFCONFIG $i up
fi
echo
elif [ "$risp" == "n" ]; then
echo "$i non e' stata spenta"
else
echo
echo "**ERRORE**"
echo
exit 1
fi
done
}
# Funzione per configurare le reti cablate
wired () {
# Controllo il parametro passato allo script
if [ -z "$1" ]; then
# Se non e' stato passato niente cerco le interfacce
echo -n "Cerco le interfacce... "
NUM=`wc -l /proc/net/dev | cut -d " " -f 1`
if [ $NUM -gt 3 ]; then
IF=`tail -n $(($NUM-3)) /proc/net/dev | cut -d " " -f 3 | cut -d ":" -f 1`
else
echo
echo "**ERRORE**"
echo "Nessuna scheda ethernet trovata!"
echo
exit 1
fi
# Tolgo le interfacce wireless perche' non interessano
if [ -e /proc/net/wireless ]; then
NUM=`wc -l /proc/net/wireless | cut -d " " -f 1`
if [ $NUM -gt 2 ]; then
IF2=`tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1`
OLD_IF=$IF
IF=""
for i in $OLD_IF; do
if [ -z "$(echo $IF2 | grep $i)" ]; then
IF="$IF $i"
fi
done
fi
fi
echo "Fatto"
# Faccio scegliere l'interfaccia
echo "Ho trovato queste intefacce wired:"
for i in $IF; do
IF2=$i
echo $i
done
echo
echo "Quale vuoi usare per la connessione?"
echo -n "($IF2) "
read DEV
if [ -z "$DEV" ]; then
DEV=$IF2
fi
else
NUM=`wc -l /proc/net/dev | cut -d " " -f 1`
if tail -n $(($NUM-3)) /proc/net/dev | cut -d " " -f 3 | cut -d ":" -f 1 | grep $1 &> /dev/null; then
DEV=$1
else
echo
echo "**ERRORE**"
echo "Devi inserire un'interfaccia valida!"
echo
exit 1
fi
fi
# Spengo l'interfaccia prima di configurarla (uso la funzione smorza)
smorza $DEV
# Chiedo che tipo di connessione e'
echo -n "Il tuo IP ti viene assegnato da un server DHCP? (s/n) "
read risp
if [ -z "$risp" -o "$risp" == "s" ]; then
# Configurazione rete con IP dinamici
echo "Avvio il demone dhcpcd..."
$DHCPCD -t 20 -d $DEV
sleep 5
if [ "$(ps aux | grep dhcpcd | wc -l | cut -d " " -f 1)" -gt 1 ]; then
echo "Fatto!"
echo "Hai configurato la tua rete cablata con successo! :-)"
echo
else
echo "Non sono riuscito ad avviare dhcpcd!"
echo "Prova ad eseguire '$DHCPCD -d $DEV' come utente root"
echo
exit 1
fi
elif [ "$risp" == "n" ]; then
# Configurazione rete con IP statici
echo -n "Inserisci l'IP per $DEV: "
read IPADDR
if [ -z "$IPADDR" ]; then
echo "**ERRORE**"
echo "Devi inserire un IP per configurare la scheda!"
exit 1
fi
echo -n "Inserisci la maschera di rete (255.255.255.0): "
read NETMASK
if [ -z "$NETMASK" ]; then
NETMASK="255.255.255.0"
fi
echo "Inserisci l'IP del broadcast:"
echo -n "(puo' essere lasciato vuoto se si e' incerti) "
read BROADCAST
echo "Inserisci l'IP del gateway:"
echo -n "(necessario per la connessione ad internet attraverso $DEV) "
read GW
echo "Imposto i parametri per $DEV..."
if [ -z "$BROADCAST" ]; then
$IFCONFIG $DEV $IPADDR netmask $NETMASK up
else
$IFCONFIG $DEV $IPADDR netmask $NETMASK broadcast $BROADCAST up
fi
if ! [ -z "$GW" ]; then
$ROUTE add default gw $GW
fi
echo "nameserver 127.0.0.1" > /etc/resolv.conf
echo "Fatto!"
echo "Hai configurato la tua rete cablata con successo! :-)"
echo
else
echo
echo "**ERRORE**"
echo
exit 1
fi
}
# Funzione per configurare le reti wireless
wireless () {
if [ -z $1 ]; then
echo "Cerco le interfacce..."
if [ -e /proc/net/wireless ]; then
NUM=`wc -l /proc/net/wireless | cut -d " " -f 1`
if [ $NUM -gt 2 ]; then
IF=`tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1`
else
echo
echo "**ERRORE**"
echo "Nessuna scheda wireless trovata!"
echo
exit 1
fi
else
echo
echo "**ERRORE**"
echo "Nessuna scheda wireless trovata!"
echo
exit 1
fi
echo "Fatto"
echo "Ho trovato queste interfacce wireless:"
for i in $IF; do
IF2=$i
echo $i
done
echo
echo "Quale vuoi usare per la connessione?"
echo -n "($IF2) "
read DEV
if [ -z "$DEV" ]; then
DEV=$IF2
fi
else
if [ -e /proc/net/wireless ]; then
NUM=`wc -l /proc/net/wireless | cut -d " " -f 1`
if tail -n $(($NUM-2)) /proc/net/wireless | cut -d " " -f 3 | cut -d ":" -f 1 | grep $1; then
DEV=$1
else
echo
echo "**ERRORE**"
echo "Devi inserire un'interfaccia wireless valida!"
echo
exit 1
fi
fi
fi
# Spengo l'interfaccia prima di configurarla (uso la funzione smorza)
smorza $DEV
# Cerco le reti wireless
echo "Scanning delle reti con $DEV..."
echo
$IWLIST $DEV scan
echo
echo "Non farti prendere dal panico per l'eventuale eccessiva lunghezza dell'output"
# Incomincio a chiedere i vari parametri
# ESSID
echo -n "cerca la tua rete e inserisci l'ESSID (il nome): "
read ESSID
if [ -z "$ESSID" ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome di una rete a cui connettersi!"
echo
exit 1
fi
# CHANNEL
echo -n "Inserisci il channel della rete (non la frequenza!): "
read CHAN
if [ -z "$CHAN" ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il canale della rete scelta!"
echo
exit 1
fi
# MODE
echo -n "Inserisci il tipo di rete: managed (con access point) o ad-hoc (senza access point): "
read MODE
if [ -z "$MODE" ]; then
MODE="managed"
fi
# Chiedo se serve la password
echo -n "La rete necessita di password? (s/n) "
read risp
if [ -z "$risp" -o "$risp" == "s" ]; then
# Quale tipo di password?
echo "WEP o WPA?"
echo "(N.B. WPA e' solo per reti con access point!)"
echo -n "(wpa) "
read TYPE
if [ [ -z "$TYPE" -o "$TYPE" == "wpa" -o "$TYPE" == "WPA" ] -a [ "$MODE" == "managed" -o "$MODE" == "Managed"] ]; then
# WPA
echo "Hai scelto WPA"
echo "ctrl_interface=/var/run/wpa_supplicant" > $CONF_WPA
echo "ctrl_interface_group=0" >> $CONF_WPA
echo "eapol_version=1" >> $CONF_WPA
echo "ap_scan=1" >> $CONF_WPA
echo "fast_reauth=1" >> $CONF_WPA
echo "" >> $CONF_WPA
chmod 600 $CONF_WPA
# Chiedo quale tipo di WPA
echo "Che tipo di criptaggio devo usare?"
echo -e "\tWPA-PSK\n\tWPA-EAP\n\tNONE\t(per chiavi WEP)"
read TYPE
case "$TYPE" in
# WPA-PSK
WPA-PSK)
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password: "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PSK
elif [ "$risp" == "s" ]; then
read PSK
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Creo il file di configurazione
echo -n "Creo il file di configurazione..."
echo "network={" >> $CONF_WPA
echo -e "\tscan_ssid=1" >> $CONF_WPA
echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA
echo -e "\tmode=0" >> $CONF_WPA
echo -e "\tproto=WPA WPA2" >> $CONF_WPA
echo -e "\tkey_mgmt=WPA-PSK" >> $CONF_WPA
echo -e "\tpairwise=CCMP TKIP" >> $CONF_WPA
echo -e "\tgroup=CCMP TKIP WEP104 WEP40" >> $CONF_WPA
echo -e "\tpsk=\"$PSK\"" >> $CONF_WPA
echo "}" >> $CONF_WPA
echo "Fatto"
;;
# WPA-EAP
WPA-EAP)
# Chiedo quale tipo di EAP
echo "Quale tipo di EAP vuoi usare?"
echo -e "\tTLS\n\tPEAP\n\tTTLS"
read TYPE
case "$TYPE" in
# WPA-EAP --> TLS
TLS)
# Chiedo l'identita'
echo -n "Inserisci la tua identita': "
read ID
if [ -z "$ID" ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il tuo identificativo per connetterti alla rete!"
echo
exit 1
fi
# Chiedo il file del certificato
echo "Inserisci il nome del file che contiene"
echo -n "l'autorizzazione del server (comprensivo di path assoluto!): "
read CA
if [ -z "$CA" -o ! -e $CA ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!"
echo
exit 1
fi
# Chiedo il file del certificato
echo "Inserisci il nome del file che contiene "
echo -n "il certificato del client (comprensivo di path assoluto!): "
read CLIENT
if [ -z "$CLIENT" -o ! -e $CLIENT ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome del certicficato del tuo client, comprensivo di path assoluto!"
echo
exit 1
fi
# Chiedo il file della chiave privata
echo "Inserisci il nome del file che contiene"
echo -n "la chiave privata (comprensivo di path assoluto!): "
read KEY
if [ -z "$KEY" -o ! -e $KEY ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome della chiave primaria, comprensivo di path assololuto!"
echo
exit 1
fi
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password: "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PASSWD
elif [ "$risp" == "s" ]; then
read PASSWD
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Creo il file di configurazione
echo -n "Creo il file di configurazione..."
echo "network={" >> $CONF_WPA
echo -e "\tscan_ssid=1" >> $CONF_WPA
echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA
echo -e "\tmode=0" >> $CONF_WPA
echo -e "\tproto=WPA WPA2" >> $CONF_WPA
echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA
echo -e "\tpairwise=CCMP TKIP" >> $CONF_WPA
echo -e "\tgroup=CCMP TKIP WEP104 WEP40" >> $CONF_WPA
echo -e "\teap=TLS" >> $CONF_WPA
echo -e "\tidentity=\"$ID\"" >> $CONF_WPA
echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA
echo -e "\tclient_cert=\"$CLIENT\"" >> $CONF_WPA
echo -e "\tprivate_key=\"$KEY\"" >> $CONF_WPA
echo -e "\tprivate_key_passwd=\"$PASSWD\"" >> $CONF_WPA
echo "}" >> $CONF_WPA
echo "Fatto"
;;
# WPA-EAP --> PEAP
PEAP)
# Chiedo l'identita'
echo -n "Inserisci la tua identita': "
read ID
if [ -z "$ID" ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il tuo identificativo per connetterti alla rete!"
echo
exit 1
fi
# Chiedo il file del certificato
echo "Inserisci il nome del file che contiene"
echo -n "l'autorizzazione del server (comprensivo di path assoluto!): "
read CA
if [ -z "$CA" -o ! -e $CA ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!"
echo
exit 1
fi
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password: "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PASSWD
elif [ "$risp" == "s" ]; then
read PASSWD
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Creo il file di configurazione
echo -n "Creo il file di configurazione..."
echo "network={" >> $CONF_WPA
echo -e "\tscan_ssid=1" >> $CONF_WPA
echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA
echo -e "\tmode=0" >> $CONF_WPA
echo -e "\tproto=WPA WPA2" >> $CONF_WPA
echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA
echo -e "\teap=PEAP" >> $CONF_WPA
echo -e "\tidentity=\"$ID\"" >> $CONF_WPA
echo -e "\tpassword=\"$PASSWD\"" >> $CONF_WPA
echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA
echo -e "\tphase1=\"peaplabel=0\"" >> $CONF_WPA
echo -e "\tphase2=\"auth=MSCHAPV2\"" >> $CONF_WPA
echo "}" >> $CONF_WPA
echo "Fatto"
;;
# WPA-EAP --> TTLS
TTLS)
# Chiedo l'identita'
echo -n "Inserisci la tua identita': "
read ID
if [ -z "$ID" ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il tuo identificativo per connetterti alla rete!"
echo
exit 1
fi
# Chiedo l'identita' anonima
echo -n "Inserisci la tua identita' anonima: "
read ANON_ID
# Chiedo il file del certificato
echo "Inserisci il nome del file che contiene"
echo -n "l'autorizzazione del server (comprensivo di path assoluto!): "
read CA
if [ -z "$CA" -o ! -e $CA ]; then
echo
echo "**ERRORE**"
echo "Devi inserire il nome del certificato del server, comprensivo di path assoluto!"
echo
exit 1
fi
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password: "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PASSWD
elif [ "$risp" == "s" ]; then
read PASSWD
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Creo il file di configurazione
echo -n "Creo il file di configurazione..."
echo "network={" >> $CONF_WPA
echo -e "\tscan_ssid=1" >> $CONF_WPA
echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA
echo -e "\tmode=0" >> $CONF_WPA
echo -e "\tproto=WPA WPA2" >> $CONF_WPA
echo -e "\tkey_mgmt=WPA-EAP" >> $CONF_WPA
echo -e "\teap=TTLS" >> $CONF_WPA
echo -e "\tidentity=\"$ID\"" >> $CONF_WPA
echo -e "\tanonymous_identity=\"$ANON_ID\"" >> $CONF_WPA
echo -e "\tpassword=\"$PASSWD\"" >> $CONF_WPA
echo -e "\tca_cert=\"$CA\"" >> $CONF_WPA
echo -e "\tphase2=\"auth=MD5\"" >> $CONF_WPA
echo "}" >> $CONF_WPA
echo "Fatto"
;;
# Spazio per gli errori
*)
echo
echo "**ERRORE**"
echo "Devi inserire un tipo di EAP tra quelli proposti!"
echo
exit 1
;;
esac
;;
# NONE (static WEP)
NONE)
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo -n "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password in esadecimale (controlla le impostazioni dell'access point): "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PASSWD
elif [ "$risp" == "s" ]; then
read PASSWD
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Creo il file di configurazione
echo -n "Creo il file di configurazione..."
echo "network={" >> $CONF_WPA
echo -e "\tscan_ssid=1" >> $CONF_WPA
echo -e "\tssid=\"$ESSID\"" >> $CONF_WPA
echo -e "\tmode=0" >> $CONF_WPA
echo -e "\tkey_mgmt=NONE" >> $CONF_WPA
echo -e "\twep_tx_keyidx=0" >> $CONF_WPA
echo -e "\twep_key0=$PASSWD" >> $CONF_WPA
echo "}" >> $CONF_WPA
echo "Fatto"
;;
# Spazio per gli errori
*)
echo
echo "**ERRORE**"
echo "Devi inserire un tipo di criptaggio tra quelli proposti!"
echo
exit 1
;;
esac
# Chiedo che driver deve usare wpa_supplicant
echo "Che driver deve usare wpa_supplicant?"
echo -e "\twext\t(Generic driver)\tDefault"
echo -e "\tralink\t(Ralink driver)"
echo -e "\thostap\t(Prism2/2.5/3 driver)"
echo -e "\tprism54\t(PrismGT/Duette/Indigo driver)"
echo -e "\tmadwifi\t(Atheros driver)"
echo -e "\tatmel\t(Atmel AT76C5XXx driver)"
echo -e "\tipw\t(IntelProWireless 2100/2200 driver)"
echo -e "\tndiswrapper\t(Ndiswrapper driver)"
read DRIVER
if [ -z "$DRIVER" ]; then
DRIVER="wext"
fi
# Imposto i parametri wireless
echo "Setto i parametri wireless per $DEV e avvio wpa_supplicant..."
if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN && $WPA_SUPPLICANT -D$DRIVER -i$DEV -c$CONF_WPA -B ; then
echo "Fatto"
wired $DEV
else
echo
echo "**ERRORE**"
echo
exit 1
fi
elif [ "$TYPE" == "wep" -o "$TYPE" == "WEP" ]; then
# Se non e' WPA, allora e' WEP
echo "Hai scelto WEP"
# Chiedo la password
echo "Adesso dovrai inserire la password."
echo "Vuoi che i caratteri digitati vengano visualizzati? (s/n) "
read risp
echo -n "Inserisci la password in esadecimale (controlla le impostazioni dell'access point): "
if [ -z "$risp" -o "$risp" == "n" ]; then
read -s PASSWD
elif [ "$risp" == "s" ]; then
read PASSWD
else
echo
echo "**ERRORE**"
echo
exit 1
fi
# Imposto i parametri wireless
echo "Setto i parametri wireless per $DEV..."
if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN && $IWCONFIG $DEV key $PASSWD ; then
echo "Fatto"
wired $DEV
else
echo
echo "**ERRORE**"
echo
exit 1
fi
else
echo
echo "**ERRORE**"
echo "Devi inserire un tipo di password tra quelli proposti!"
echo
exit 1
fi
elif [ "$risp" == "n" ]; then
# La rete wireless non ha bisogno di password
echo "La rete scelta non e' protetta."
# Imposto i parametri wireless
echo "Setto i parametri wireless per $DEV..."
if $IWCONFIG $DEV mode $MODE essid $ESSID channel $CHAN ; then
echo "Fatto"
$IWCONFIG $DEV key off &> /dev/null
wired $DEV
else
echo
echo "**ERRORE**"
echo
exit 1
fi
else
echo
echo "**ERRORE**"
echo
exit 1
fi
}
# Controllo le dipendenze
check_dep
# Imposto gli eseguibili
utilities
# Controllo i parametri passati allo script
case "$1" in
"--wired")
wired $2
exit 0
;;
"--wireless")
wireless $2
exit 0
;;
*)
echo
echo "Opzioni valide:"
echo "$0 --wired [dev] --> per configurare reti cablate"
echo "$0 --wireless [dev] --> per configurare reti wireless"
echo -e "\t\t[dev] --> l'interfaccia da usare (opzionale, da usare senza '[]')"
echo
echo "Versione 1.0"
echo "By Ansa89 (http://stiiv.netsons.org)"
echo
exit 1
;;
esac
#EOF
- Autore: Ansa89