[Bash] Script connessione WIFI senza Network Manager

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

[Bash] Script connessione WIFI senza Network Manager

Messaggio da thece »

:ciao:

se a qualcuno potesse interessare, ho scritto il seguente script per instaurare una connessione ad una rete WIFI tramite wpa_supplicant, senza utilizzare il Network Manager


Note:

- lo script va eseguito come root
- lo script suppone di essere salvato nella directory /scripts
- lo script suppone che i vari file di configurazione SSID01.conf, SSID02.conf, etc ... per wpa_supplicant siano salvati nella directory /scripts
- lo script modifica il file /etc/resolv.conf aggiungendo il gateway di rete (supposto di indirizzo IP 192.168.*) come server DNS


connectToSSID.sh

Codice: Seleziona tutto

#!/bin/bash



help ()
{
cat << EOF

DESCRIPTION

   ...

USAGE

   connectToSSID.sh [SSID01 |  SSID02 | ... ] IFNAME

EOF
}



SSID="$1"
IFNAME="$2"



if [[ -z "$SSID" || -z "$IFNAME" ]]; then
	help
	exit 1
fi

if [[ ! -d "/sys/class/net/$IFNAME" ]]; then
	echo "[ERR] $IFNAME isn't a network interface"
	exit 1
fi

if [[ ! -d "/sys/class/net/$IFNAME/wireless" ]]; then
	echo "[ERR] $IFNAME isn't a wireless network interface"
	exit 1
fi

IFNAME_CHECK=$(ifconfig $IFNAME | head -n 1 | awk '{FS=" "} {print $1}')

if [[ "$IFNAME" != "$IFNAME_CHECK" ]]; then
	echo "[ERR] $IFNAME is down"
	exit 1
fi

if [[ ! -f "/scripts/$SSID.conf" ]]; then
	echo "[ERR] Configuration file /scripts/$SSID.conf not exists"
	exit 1
fi

/etc/init.d/network-manager stop

# sleep 3

killall wpa_supplicant

# sleep 3

wpa_supplicant -D nl80211 -i $IFNAME -c /scripts/$SSID.conf -dd -B

dhclient $IFNAME

NAMESERVER_CHECK="$(cat /etc/resolv.conf | grep 192.168. | awk '{FS=" "} {print $2}')"

if [[ -z "$NAMESERVER_CHECK" ]]; then
		GATEWAY="$(route -n | grep '^0.0.0.0' | awk '{FS=" "} {print $2}')"
		if [[ "$GATEWAY" == 192.168.* ]]; then
			echo "nameserver $GATEWAY" >> /etc/resolv.conf
		fi
fi

exit 0
Esempio di SSID.conf per rete WIFI protetta con cifratura WPA2

Codice: Seleziona tutto

ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="SSID"
	psk="PASSWORD"
	key_mgmt=WPA-EAP WPA-PSK
	proto=RSN WPA
	pairwise=CCMP TKIP
}
Esempio di SSID.conf per rete WIFI protetta con cifratura WEP

Codice: Seleziona tutto

ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="SSID"
	key_mgmt=NONE
	wep_key0="PASSWORD"
}
Esempio di SSID.conf per rete WIFI non protetta

Codice: Seleziona tutto

ctrl_interface=/run/wpa_supplicant
update_config=1

network={
	ssid="SSID"
	key_mgmt=NONE
}
Ultima modifica di thece il giovedì 16 febbraio 2017, 14:01, modificato 3 volte in totale.
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [Bash] Script connessione WIFI senza Network Manager

Messaggio da bingel »

Utile in caso di installazione senza ambiente grafico?
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [Bash] Script connessione WIFI senza Network Manager

Messaggio da thece »

Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [Bash] Script connessione WIFI senza Network Manager

Messaggio da bingel »

Altri utilizzi quindi quali potrebbero essere?
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13164
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [Bash] Script connessione WIFI senza Network Manager

Messaggio da thece »

Togliersi dalle scatole il Network Manager: quando si suppone che stia funzionando male oppure quando si vuole fare una qualche operazione in cui il Network Manager influisce negativamente e lo si vuole quindi disabilitare
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti