Estou tentando desenvolver um ponto de acesso que possa ser usado para conectar "sem cabeça" ao wifi.
Estou configurando o ponto de acesso usando hostapd conf:
interface=wlan0
ssid=AP
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=0
adicionando ao meu /etc/hosts
192.168.1.1 nginx.ap.com
e para o meu dnsmasq
:
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Add other name servers here, with domain specs if they are for non-public domains.
server=/localnet/192.168.1.1
# Add local-only domains here, queries in these domains are answered from /etc/hosts or DHCP only.
local=/localnet/
# Make all host names resolve to the Raspberry Pi's IP address
address=/#/192.168.1.1
# Specify the interface that will listen for DHCP and DNS requests
interface=wlan0
# Set the domain for dnsmasq
domain=localnet
# Specify the range of IP addresses the DHCP server will lease out to devices, and the duration of the lease
dhcp-range=192.168.1.10,192.168.1.254,1h
# Specify the default route
dhcp-option=3,192.168.1.1
# Specify the DNS server address
dhcp-option=6,192.168.1.1
# Set the DHCP server to authoritative mode.
dhcp-authoritative
log-dhcp
log-queries
log-facility=/tmp/dnsmasq.log
e um servidor LAMP que ouve nginx.ap.com
isso não está realmente funcionando como eu imaginava pois tinha que personalizar o DNS no meu mac para que ele usasse o pis e eu só teria acesso se eu digitar http://nginx.ap.com
no o navegador que eu esperava receber um pop-up e todos os outros domínios seriam redirecionados para isso.
Para meu /etc/network/interfaces
:
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
Agora estou tentando criar um script que o servidor da Web nginx possa executar usando o php para fechar o ponto de acesso e conectar-se ao Wi-Fi usando SSID e senha de um formulário HTML.
Eu tenho a verificação para ver se o SSID
existe na rede que funciona com este script bash:
if ! iwlist scan | grep "\"$name\"" &> /dev/null
then
echo "No such SSID - '$name'";
exit
fi
Agora quero verificar se a senha está correta e nunca mais usar o ponto de acesso se houver um wifi válido.
Então, eu corro um cron simples como este:
if ! ping -c 2 8.8.8.8 &> /dev/null
then
service hostapd start
service dnsmasq start
else
service hostapd stop
service dnsmasq stop
fi
mas isso não funciona corretamente, pois eu também preciso controlar o /etc/network/interfaces
e atualizar a rede e para isso eu tenho que inicializar o usuário do AP, destruindo qualquer feedback possível.
Existe uma maneira de verificar se uma configuração funciona sem desconectar o ponto de acesso? E qualquer outra dica seria muito apreciada.