Script Bash abilitazione scheda wireless: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(9 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
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.
__TOC__
 
== 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/>
È 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 20: 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 56: 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 65: 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>
 
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|Autore=[[Utente:Noise|Noise]]
{{Autori
|Autore=[[Utente:Noise|Noise]]
|Verificata_da=
: [[Utente:Grayhawk|Grayhawk]]
: [[Utente:HAL 9000|HAL 9000]]
|Estesa_da=
|Estesa_da=
: [[Utente:Grayhawk|Grayhawk]] (Aggiunto uso DHCP)
: [[Utente:Grayhawk|Grayhawk]] (Aggiunto uso DHCP)
: [[Utente:HAL 9000|HAL 9000]] (Aggiunta connessione a rete con WPA2)
: [[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]]

Versione attuale delle 08:42, 28 lug 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

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 qui). E anche creare più profili diversi tra cui scegliere di volta in volta, installando il pacchetto switchconf (si veda qui).
I comandi presentati nello script però possono essere d'aiuto anche per la configurazione da terminale.

Creazione script

Creare con privilegi di amministrazione un file chiamato wireless nella directory /usr/local/sbin, con il seguente contenuto:

#! /bin/sh -e


### PARTE DA MODIFICARE con i propri parametri

# specificare il nome della propria scheda di rete (eth0, eth1, wlan0, ecc... )
# (utilizzare il comando "/sbin/iwconfig 2> /dev/null", senza virgolette, mentre attiva)
IFACE="eth0"

# specificare l'essid della rete a cui si intende connettersi
ESSID="vostro essid di rete"

# È SCONSIGLIATO usare una variabile se si utilizza WPA, 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)
# È necessaria in caso si utilizzi come protezione WEP (obsoleto!)
#PASSWORD="vostra password"

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

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

# netmask
NETMASK="255.255.255.0"


### MAIN

echo Abilitazione Scheda Wireless in corso...

# attiva la scheda
ifconfig "$IFACE" up

# assegna essid
iwconfig "$IFACE" essid "$ESSID"

# si possono scegliere altre modalità, tra cui ad-hoc
# (supporta solo connessioni non criptate o criptate con WEP, e avviene senza access point)
# managed è la default e serve per connettersi a un access point
iwconfig "$IFACE" mode managed

# decommentare la riga successiva (togliendo #) per connessioni non criptate
# iwconfig "$IFACE" key open

# decommentare la riga successiva (togliendo #) per connessioni criptate con WEP
# iwconfig "$IFACE" key restricted "$PASSWORD"

# commentare le righe successive se la rete non utilizza crittografia WPA2
# (WPA2 è l'impostazione consigliata per reti domestiche, dato che WEP è obsoleta e insicura)
if ! [ -e /root/.wpaconfig ]; then
   # creo il file se non esiste
   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
# (non supportate da tutte le schede, per cui avviene già in automatico)
iwconfig "$IFACE" power on || true
iwconfig "$IFACE" commit || true

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

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

# messaggio
echo Scheda Wireless abilitata correttamente.

# esci
exit 0

E assegnargli i giusti permessi, utente e gruppo, per impedire modifiche da parte dell'utente senza privilegi (e una potenziale vulnerablità nel sistema):

# chmod 740 /usr/local/sbin/wireless
# chown root:root /usr/local/sbin/wireless

Ora sarà sempre possibile richiamare la configurazione con il comando:

# wireless

Approfondimento

Le variabili IFACE, ESSID, 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). La variabile GATEWAY 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 ADDRESS è commentata allora sarà usata un'assegnazione dinamica (con DHCP) anziché statica dell'indirizzo IP.

La variabile PASSWORD serve a fornire la password in assenza di /root/.wpaconfig, ma l'uso è fortemente sconsigliato.

Si noti che in caso di captive portal, dove l'autenticazione tipicamente avviene in un secondo momento dal proprio browser, la rete può essere aperta e senza crittografia.

Al file di configurazione /root/.wpaconfig creato (tra "network={" e "}") si può aggiungere anche la riga scan_ssid=1 per permettere la connessione a reti protette da WPA2 con essid "nascosto".




Guida scritta da: Noise Swirl-auth60.png Debianized 60%
Estesa da:
Grayhawk (Aggiunto uso DHCP)
HAL 9000 (Aggiunta connessione a rete con WPA2)
Verificata da:
Grayhawk
HAL 9000

Verificare ed estendere la guida | Cos'è una guida Debianized