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
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
}
Codice: Seleziona tutto
ctrl_interface=/run/wpa_supplicant
update_config=1
network={
ssid="SSID"
key_mgmt=NONE
wep_key0="PASSWORD"
}
Codice: Seleziona tutto
ctrl_interface=/run/wpa_supplicant
update_config=1
network={
ssid="SSID"
key_mgmt=NONE
}
