-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathap_setup.sh
executable file
·78 lines (63 loc) · 1.88 KB
/
ap_setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env bash
# enable access point on raspberry pi
# usage:
# ./ap_setup.sh ssid_name ssid_pass hostname
#
# default values are all raspberry-ap (security at user's risk)
# run from reporoot/
pushd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
first_time_setup() {
sudo apt-get update
sudo apt-get install -y \
dnsmasq \
hostapd \
nginx
}
get_piapi() {
which git || sudo apt-get install -y git
pushd $(mktemp -d)
git clone https://github.com/avishayp/pi-ap
}
update() {
echo "updating ap params"
sed -i "s/ssid=.*/ssid=${SSID_NAME}/g; s/wpa_passphrase=.*/wpa_passphrase=${SSID_PASS}/g" fakeroot/etc/hostapd/hostapd.conf
echo "$HOST_NAME" > fakeroot/etc/hostname
sed -i "s/127.0.1.1.*/127.0.1.1 ${HOST_NAME}/g" fakeroot/etc/hosts
sudo cp -pRv fakeroot/* /
cp ap_setup.sh /etc/
echo "rebooting..."
sudo reboot
}
is_uptodate() {
cmp -s fakeroot/etc/version /etc/version \
&& [ "$SSID_NAME" == "$ssid" ] \
&& [ "$SSID_PASS" == "$wpa_passphrase" ] \
&& [ "$HOST_NAME" == "$hostname" ]
}
on_boot() {
if [ ! -d fakeroot ] ; then
get_piapi
./pi-ap/ap_setup.sh "$SSID_NAME" "$SSID_PASS" "$HOST_NAME"
exit $?
fi
is_uptodate && echo "nothing changed, ap is up to date" || update
}
once() {
which hostapd && echo "hostapd already installed" || first_time_setup
}
get_params() {
# get current values
if [ -f /etc/hostapd/hostapd.conf ] ; then
source <(grep ssid /etc/hostapd/hostapd.conf)
source <(grep wpa_passphrase /etc/hostapd/hostapd.conf)
fi
hostname="$(hostname)"
echo "ssid_name: $ssid ==> $SSID_NAME"
echo "ssid_pass: $wpa_passphrase ==> $SSID_PASS"
echo "hostname: $hostname ==> $HOST_NAME"
}
SSID_NAME=${1-"raspberry-ap"}
SSID_PASS=${2-"raspberry-ap"}
HOST_NAME=${3-"raspberry-ap"}
get_params
once && on_boot