Script Bash abilitazione scheda wireless: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(12 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
Di seguito un semplice script per la connessione a una rete wireless. Richiede di essere eseguito con privilegi di amministrazione e che non sia attivo alcun network manager.
{{Versioni compatibili|Jessie|Stretch|Buster}}
__TOC__


È possibile configurare la rete wireless senza script modificando opportunamente il file ''/etc/network/interfaces'' (si veda [http://guide.debianizzati.org/index.php/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]).
== Introduzione==
In questa guida un semplice script per la connessione a una rete wireless. Richiede di essere eseguito con [[privilegi di amministrazione]] 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/>
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 amministrazione]] un file chiamato <code>wireless</code> nella directory <code>/usr/local/sbin</code>, con il seguente contenuto:


<pre>
<pre>
Riga 19: Riga 24:
ESSID="vostro essid di rete"
ESSID="vostro essid di rete"


# password (se utilizzata) per WEP o WPA
# È SCONSIGLIATO usare una variabile se si utilizza WPA, meglio lasciarla commentata e optare per:
PASSWORD="vostra password"
# 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)
# È necessaria in caso si utilizzi come protezione WEP (obsoleto!)
#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 55: Riga 63:
# 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 64: Riga 86:
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 [ -n "${ADDRESS:-}" ] && [ -n "${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>


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.
Ora sarà sempre possibile richiamare la configurazione con il comando:
<pre># wireless</pre>


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".
== 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.


Se si ha a che fare con un server DHCP, possiamo farci assegnare un IP tramite il comando
La variabile <code>PASSWORD</code> serve a fornire la password in assenza di <code>/root/.wpaconfig</code>, ma l'uso è fortemente sconsigliato.
<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.


----
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.
[[Utente:Noise|Noise]]


Aggiunto uso DHCP da [[Utente:Grayhawk|Grayhawk]]
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".


Aggiunta connessione a rete con WPA2 da [[Utente:HAL 9000|HAL 9000]]
{{Autori
|Autore=[[Utente:Noise|Noise]]
|Verificata_da=
: [[Utente:Grayhawk|Grayhawk]]
: [[Utente:HAL 9000|HAL 9000]]
|Estesa_da=
: [[Utente:Grayhawk|Grayhawk]] (Aggiunto uso DHCP)
: [[Utente:HAL 9000|HAL 9000]] (Aggiunta connessione a rete con WPA2)
|Numero_revisori=2
}}


[[Categoria: Schede Wireless]][[Categoria: Bash Scripting]]
[[Categoria: Schede Wireless]][[Categoria: Bash Scripting]]
3 581

contributi