Script Bash abilitazione scheda wireless: differenze tra le versioni

aggiornamento
mNessun oggetto della modifica
(aggiornamento)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
Di seguito un semplice script per la connessione a una rete wireless. Richiede di essere eseguito con [[privilegi di amministratore]] e che non sia attivo alcun network manager.
 
== Introduzione==
In questa guida un semplice script per la connessione a una rete wireless. Richiede di essere eseguito con [[privilegi di amministratore]] e che non sia attivo alcun network manager.


È possibile configurare la rete wireless senza script modificando opportunamente il file ''/etc/network/interfaces'' (si veda [[Configurazione_di_una_connessione_wireless|qui]]). E anche creare più profili diversi tra cui scegliere di volta in volta, installando il pacchetto switchconf (si veda [http://e-zine.debianizzati.org/web-zine/numero_2/?page=60 qui]).<br/>
È possibile configurare la rete wireless senza script modificando opportunamente il file ''/etc/network/interfaces'' (si veda [[Configurazione_di_una_connessione_wireless|qui]]). E anche creare più profili diversi tra cui scegliere di volta in volta, installando il pacchetto switchconf (si veda [http://e-zine.debianizzati.org/web-zine/numero_2/?page=60 qui]).<br/>
I comandi presentati nello script però possono essere d'aiuto anche per la configurazione da terminale.
I comandi presentati nello script però possono essere d'aiuto anche per la configurazione da terminale.


Creare un file (leggibile soltanto da [[root]] e in un percorso in cui soltanto root ha permessi di scrittura), con questo contenuto:
== Creazione script ==
Creare con [[privilegi di amministratore]] un file <code>wireless</code> in <code>/usr/local/sbin</code>, con questo contenuto:


<pre>
<pre>
Riga 20: Riga 23:
ESSID="vostro essid di rete"
ESSID="vostro essid di rete"


# È SCONSIGLIATO usare una variabile, meglio lasciarla commentata e optare per:
# 1- una richiesta interattiva (effettuata solo la prima volta che si avvia lo script)
# 2- creare con wpa_passphrase il file /root/.wpaconfig (basta avviare questo script la prima volta)
# password (se utilizzata) per WEP o WPA
# password (se utilizzata) per WEP o WPA
PASSWORD="vostra password"
#PASSWORD="vostra password"


# indirizzo (se non si utilizza DHCP)
# indirizzo (se non si utilizza DHCP, altrimenti commentare)
ADDRESS="192.168.0.2"
ADDRESS="192.168.0.2"


# gateway (se non si utilizza DHCP)
# gateway (se non si utilizza DHCP e si vuole un gateway, altrimenti commentare)
GATEWAY="192.168.0.1"
GATEWAY="192.168.0.1"


Riga 56: Riga 62:
# commentare le righe successive se la rete non utilizza crittografia WPA2
# commentare le righe successive se la rete non utilizza crittografia WPA2
# (WPA2 è l'impostazione consigliata per reti domestiche, dato che WEP è obsoleta e insicura)
# (WPA2 è l'impostazione consigliata per reti domestiche, dato che WEP è obsoleta e insicura)
umask 0077 &&
if ! [ -e /root/.wpaconfig ]; then
wpa_passphrase "$ESSID" "$PASSWORD" > /tmp/.wpaconfig &&
  # creo il file se non esiste
wpa_supplicant -i "$IFACE" -c /tmp/.wpaconfig -B
  umask 0077 &&
  if [ -z "${PASSWORD:-}" ]; then
      # richiesta interattiva della password
      printf %s "Password: "
      stty -echo # non stampare a schermo la password
      wpa_passphrase "$ESSID" > /root/.wpaconfig
      stty echo  # riprendi a stampare a schermo
      echo Ok
  else
      # uso la variabile (sconsigliato e *visibile* in chiaro nei processi!)
      wpa_passphrase "$ESSID" "$PASSWORD" > /root/.wpaconfig
  fi
fi
# leggo il file con ESSID e PASSWORD
wpa_supplicant -i "$IFACE" -c /root/.wpaconfig -B


# accende la scheda di rete e rendi effettive le modifiche
# accende la scheda di rete e rendi effettive le modifiche
Riga 65: Riga 85:
iwconfig "$IFACE" commit || true
iwconfig "$IFACE" commit || true


# assegnazione IP alla scheda
if [ -n "${ADDRESS:-}" ]; then
ifconfig "$IFACE" "$ADDRESS" netmask "$NETMASK"
  # assegnazione statica IP alla scheda
  ifconfig "$IFACE" "$ADDRESS" netmask "$NETMASK"
else
  # assegnazione dinamica con DHCP
  dhclient "$IFACE"
fi


# aggiungi nuovo percorso alla tabella di routing
if [ -z "${ADDRESS:-}" ] || [ -z "${GATEWAY:-}" ]; then
route add default gw "$GATEWAY"
  # aggiungi nuovo percorso alla tabella di routing
  route add default gw "$GATEWAY"
fi


# messaggio
# messaggio
echo Scheda Wireless abilitata correttamente.
echo Scheda Wireless abilitata correttamente.
# esci
exit 0
</pre>
</pre>


Le variabili IFACE, ESSID, PASSWORD, ADDRESS e GATEWAY vanno inizializzate con i vostri parametri. Si deve inoltre scegliere uno dei tre metodi per la crittografia, commentando gli altri (al momento lo script utilizza WPA2).
E assegnargli i giusti permessi, utente e gruppo, per impedire modifiche da parte dell'utente senza privilegi (e una potenziale vulnerablità nel sistema):
<pre># chmod 740 /usr/local/sbin/wireless
# chown root:root /usr/local/sbin/wireless</pre>
 
Ora sarà sempre possibile richiamare la configurazione con il comando:
<pre># wireless</pre>
 
== Approfondimento ==
Le variabili <code>IFACE</code>, <code>ESSID</code>, <code>ADDRESS</code> e <code>GATEWAY</code> vanno inizializzate con i vostri parametri. Si deve inoltre scegliere uno dei tre metodi per la crittografia, commentando gli altri (al momento lo script utilizza WPA2). La variabile <code>GATEWAY</code> può essere commentata se non ce n'è bisogno (il proprio PC si collega direttamente a Internet, per esempio, senza passare per un router/gateway), e se la variabile <code>ADDRESS</code> è commentata allora sarà usata un'assegnazione dinamica (con DHCP) anziché statica dell'indirizzo IP.
 
La variabile <code>PASSWORD</code> serve a fornire la password in assenza di <code>/root/.wpaconfig</code>, ma l'uso è fortemente sconsigliato.


Si noti che in caso di [http://it.wikipedia.org/wiki/Captive_portal captive portal], dove l'autenticazione tipicamente avviene in un secondo momento dal proprio browser, la rete può essere aperta e senza crittografia.
Si noti che in caso di [http://it.wikipedia.org/wiki/Captive_portal captive portal], dove l'autenticazione tipicamente avviene in un secondo momento dal proprio browser, la rete può essere aperta e senza crittografia.


Per l'autenticazione, con WEP o WPA2, è possibile sostituire la riga PASSWORD="..." con read PASSWORD (per rendere interattiva la richiesta). Inoltre per WPA2 si può creare a priori il file ''wpaconfig'' (utilizzando wpa_passphrase) in un percorso raggiungibile soltanto da root, rimuovendo quindi sia la riga PASSWORD="...", sia ''umask'' e ''wpa_passphrase'', e lasciando soltanto la riga ''wpa_supplicant'' per richiamarne la configurazione. In questo caso nel file di configurazione (tra "network={" e "}") si può aggiungere anche la riga scan_ssid=1 per permettere la connessione a reti protette da WPA2 con essid "nascosto".
Al file di configurazione <code>/root/.wpaconfig</code> creato (tra "network={" e "}") si può aggiungere anche la riga <code>scan_ssid=1</code> per permettere la connessione a reti protette da WPA2 con essid "nascosto".
 
Se si ha a che fare con un server DHCP, possiamo farci assegnare un IP tramite il comando:
<pre>
# dhclient eth0
</pre>
al posto della riga in cui si assegna l'IP alla scheda. A questo punto non sarà necessario neanche assegnare l'indirizzo del gateway poiché pensa a tutto il server DHCP.


{{Autori
{{Autori
3 581

contributi