浏览代码

wifi command

Bob Mottram 9 年前
父节点
当前提交
6d3943e23e
共有 6 个文件被更改,包括 731 次插入558 次删除
  1. 16
    8
      src/freedombone
  2. 5
    5
      src/freedombone-client
  3. 552
    528
      src/freedombone-config
  4. 11
    11
      src/freedombone-mesh-batman
  5. 6
    6
      src/freedombone-mesh-install
  6. 141
    0
      src/freedombone-wifi

+ 16
- 8
src/freedombone 查看文件

441
 
441
 
442
 WIFI_CHANNEL=2
442
 WIFI_CHANNEL=2
443
 WIFI_INTERFACE=wlan0
443
 WIFI_INTERFACE=wlan0
444
+WIFI_TYPE='wpa2-psk'
445
+WIFI_SSID=
446
+WIFI_PASSPHRASE=
444
 
447
 
445
 # cjdns settings
448
 # cjdns settings
446
 ENABLE_CJDNS="no"
449
 ENABLE_CJDNS="no"
457
 # B.A.T.M.A.N settings
460
 # B.A.T.M.A.N settings
458
 ENABLE_BATMAN="no"
461
 ENABLE_BATMAN="no"
459
 BATMAN_CELLID='any'
462
 BATMAN_CELLID='any'
460
-ESSID='mesh'
461
 
463
 
462
 # Babel mesh
464
 # Babel mesh
463
 ENABLE_BABEL="no"
465
 ENABLE_BABEL="no"
1061
         if [[ $CONFIGURATION_FILE != "/root/${PROJECT_NAME}.cfg" ]]; then
1063
         if [[ $CONFIGURATION_FILE != "/root/${PROJECT_NAME}.cfg" ]]; then
1062
             cp $CONFIGURATION_FILE /root/${PROJECT_NAME}.cfg
1064
             cp $CONFIGURATION_FILE /root/${PROJECT_NAME}.cfg
1063
         fi
1065
         fi
1066
+        if grep -q "WIFI_INTERFACE" $CONFIGURATION_FILE; then
1067
+            WIFI_INTERFACE=$(grep "WIFI_INTERFACE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1068
+        fi
1069
+        if grep -q "WIFI_SSID" $CONFIGURATION_FILE; then
1070
+            WIFI_SSID=$(grep "WIFI_SSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1071
+        fi
1072
+        if grep -q "WIFI_TYPE" $CONFIGURATION_FILE; then
1073
+            WIFI_TYPE=$(grep "WIFI_TYPE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1074
+        fi
1075
+        if grep -q "WIFI_PASSPHRASE" $CONFIGURATION_FILE; then
1076
+            WIFI_PASSPHRASE=$(grep "WIFI_PASSPHRASE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1077
+        fi
1064
         if grep -q "SYNCTHING_ID" $CONFIGURATION_FILE; then
1078
         if grep -q "SYNCTHING_ID" $CONFIGURATION_FILE; then
1065
             SYNCTHING_ID=$(grep "SYNCTHING_ID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1079
             SYNCTHING_ID=$(grep "SYNCTHING_ID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1066
         fi
1080
         fi
1223
         if grep -q "DH_KEYLENGTH" $CONFIGURATION_FILE; then
1237
         if grep -q "DH_KEYLENGTH" $CONFIGURATION_FILE; then
1224
             DH_KEYLENGTH=$(grep "DH_KEYLENGTH" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1238
             DH_KEYLENGTH=$(grep "DH_KEYLENGTH" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1225
         fi
1239
         fi
1226
-        if grep -q "WIFI_INTERFACE" $CONFIGURATION_FILE; then
1227
-            WIFI_INTERFACE=$(grep "WIFI_INTERFACE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1228
-        fi
1229
         if grep -q "IRC_PORT" $CONFIGURATION_FILE; then
1240
         if grep -q "IRC_PORT" $CONFIGURATION_FILE; then
1230
             IRC_PORT=$(grep "IRC_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1241
             IRC_PORT=$(grep "IRC_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1231
         fi
1242
         fi
1235
         if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then
1246
         if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then
1236
             BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1247
             BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1237
         fi
1248
         fi
1238
-        if grep -q "ESSID" $CONFIGURATION_FILE; then
1239
-            ESSID=$(grep "ESSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1240
-        fi
1241
         if grep -q "TOX_PORT" $CONFIGURATION_FILE; then
1249
         if grep -q "TOX_PORT" $CONFIGURATION_FILE; then
1242
             TOX_PORT=$(grep "TOX_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1250
             TOX_PORT=$(grep "TOX_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1243
         fi
1251
         fi
3097
         echo '' >> /home/$MY_USERNAME/README
3105
         echo '' >> /home/$MY_USERNAME/README
3098
         echo 'Mesh Networking (B.A.T.M.A.N)' >> /home/$MY_USERNAME/README
3106
         echo 'Mesh Networking (B.A.T.M.A.N)' >> /home/$MY_USERNAME/README
3099
         echo '=============================' >> /home/$MY_USERNAME/README
3107
         echo '=============================' >> /home/$MY_USERNAME/README
3100
-        echo "Mesh ESSID: $ESSID" >> /home/$MY_USERNAME/README
3108
+        echo "Mesh ESSID: $WIFI_SSID" >> /home/$MY_USERNAME/README
3101
         echo "Mesh cell ID: $BATMAN_CELLID" >> /home/$MY_USERNAME/README
3109
         echo "Mesh cell ID: $BATMAN_CELLID" >> /home/$MY_USERNAME/README
3102
         echo "Mesh wifi channel: $WIFI_CHANNEL" >> /home/$MY_USERNAME/README
3110
         echo "Mesh wifi channel: $WIFI_CHANNEL" >> /home/$MY_USERNAME/README
3103
         chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
3111
         chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README

+ 5
- 5
src/freedombone-client 查看文件

41
 
41
 
42
 # B.A.T.M.A.N settings
42
 # B.A.T.M.A.N settings
43
 BATMAN_CELLID='02:BA:00:00:03:01'
43
 BATMAN_CELLID='02:BA:00:00:03:01'
44
-ESSID='mesh'
44
+WIFI_SSID='mesh'
45
 
45
 
46
 # Babel
46
 # Babel
47
 BABEL_PORT=6696
47
 BABEL_PORT=6696
155
     echo 'fi' >> $BATMAN_SCRIPT
155
     echo 'fi' >> $BATMAN_SCRIPT
156
     echo '' >> $BATMAN_SCRIPT
156
     echo '' >> $BATMAN_SCRIPT
157
     echo '# Mesh definition' >> $BATMAN_SCRIPT
157
     echo '# Mesh definition' >> $BATMAN_SCRIPT
158
-    echo "ESSID=$ESSID" >> $BATMAN_SCRIPT
158
+    echo "WIFI_SSID=$WIFI_SSID" >> $BATMAN_SCRIPT
159
     echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT
159
     echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT
160
     echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT
160
     echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT
161
     echo '' >> $BATMAN_SCRIPT
161
     echo '' >> $BATMAN_SCRIPT
193
     echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT
193
     echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT
194
     echo '        return' >> $BATMAN_SCRIPT
194
     echo '        return' >> $BATMAN_SCRIPT
195
     echo '    fi' >> $BATMAN_SCRIPT
195
     echo '    fi' >> $BATMAN_SCRIPT
196
-    echo '    echo "info: enabling batman-adv mesh network $ESSID on $IFACE"' >> $BATMAN_SCRIPT
196
+    echo '    echo "info: enabling batman-adv mesh network $WIFI_SSID on $IFACE"' >> $BATMAN_SCRIPT
197
 
197
 
198
     echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT
198
     echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT
199
     echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT
199
     echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT
213
     echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT
213
     echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT
214
     echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT
214
     echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT
215
     echo '    iwconfig $IFACE enc off' >> $BATMAN_SCRIPT
215
     echo '    iwconfig $IFACE enc off' >> $BATMAN_SCRIPT
216
-    echo '    iwconfig $IFACE mode ad-hoc essid $ESSID channel $CHANNEL' >> $BATMAN_SCRIPT
216
+    echo '    iwconfig $IFACE mode ad-hoc essid $WIFI_SSID channel $CHANNEL' >> $BATMAN_SCRIPT
217
     echo '    sleep 1' >> $BATMAN_SCRIPT
217
     echo '    sleep 1' >> $BATMAN_SCRIPT
218
     echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT
218
     echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT
219
     echo '' >> $BATMAN_SCRIPT
219
     echo '' >> $BATMAN_SCRIPT
397
             ;;
397
             ;;
398
         --essid)
398
         --essid)
399
             shift
399
             shift
400
-            ESSID="$1"
400
+            WIFI_SSID="$1"
401
             ;;
401
             ;;
402
         --channel)
402
         --channel)
403
             shift
403
             shift

+ 552
- 528
src/freedombone-config
文件差异内容过多而无法显示
查看文件


+ 11
- 11
src/freedombone-mesh-batman 查看文件

42
 fi
42
 fi
43
 
43
 
44
 # Mesh definition
44
 # Mesh definition
45
-ESSID=
46
-if ! grep -q "ESSID:" $COMPLETION_FILE; then
47
-    ESSID='mesh'
45
+WIFI_SSID=
46
+if ! grep -q "WIFI_SSID:" $COMPLETION_FILE; then
47
+    WIFI_SSID='mesh'
48
 else
48
 else
49
-    ESSID=$(cat $COMPLETION_FILE | grep "ESSID:" | awk -F ':' '{print $2}')
49
+    WIFI_SSID=$(cat $COMPLETION_FILE | grep "WIFI_SSID:" | awk -F ':' '{print $2}')
50
 fi
50
 fi
51
-sed -i "s|ESSID:.*|ESSID:${ESSID}|g" $COMPLETION_FILE
51
+sed -i "s|WIFI_SSID:.*|WIFI_SSID:${WIFI_SSID}|g" $COMPLETION_FILE
52
 
52
 
53
 CELLID='any'
53
 CELLID='any'
54
 
54
 
93
         echo 'error: unable to find wifi interface, not enabling batman-adv mesh'
93
         echo 'error: unable to find wifi interface, not enabling batman-adv mesh'
94
         return
94
         return
95
     fi
95
     fi
96
-    echo 'info: enabling batman-adv mesh network $ESSID on $IFACE'
96
+    echo 'info: enabling batman-adv mesh network $WIFI_SSID on $IFACE'
97
 
97
 
98
     systemctl stop network-manager
98
     systemctl stop network-manager
99
     sleep 5
99
     sleep 5
109
     ifconfig $IFACE down
109
     ifconfig $IFACE down
110
     ifconfig $IFACE mtu 1532
110
     ifconfig $IFACE mtu 1532
111
     iwconfig $IFACE enc off
111
     iwconfig $IFACE enc off
112
-    iwconfig $IFACE mode ad-hoc essid $ESSID channel $CHANNEL
112
+    iwconfig $IFACE mode ad-hoc essid $WIFI_SSID channel $CHANNEL
113
     sleep 1
113
     sleep 1
114
     iwconfig $IFACE ap $CELLID
114
     iwconfig $IFACE ap $CELLID
115
 
115
 
214
         avahi-browse -atl
214
         avahi-browse -atl
215
         ;;
215
         ;;
216
     *)
216
     *)
217
-    echo "error: invalid parameter $1"
218
-    echo 'usage: $0 {start|stop|restart|status|ping|ls|list}'
219
-    exit 2
220
-    ;;
217
+		echo "error: invalid parameter $1"
218
+		echo 'usage: $0 {start|stop|restart|status|ping|ls|list}'
219
+		exit 2
220
+		;;
221
 esac
221
 esac
222
 exit 0
222
 exit 0

+ 6
- 6
src/freedombone-mesh-install 查看文件

42
 
42
 
43
 # B.A.T.M.A.N settings
43
 # B.A.T.M.A.N settings
44
 BATMAN_CELLID='02:BA:00:00:03:01'
44
 BATMAN_CELLID='02:BA:00:00:03:01'
45
-ESSID='mesh'
45
+WIFI_SSID='mesh'
46
 
46
 
47
 # Babel
47
 # Babel
48
 BABEL_PORT=6696
48
 BABEL_PORT=6696
160
     echo 'systemctl stop network-manager' >> $babel_script
160
     echo 'systemctl stop network-manager' >> $babel_script
161
     echo 'ifconfig $IFACE down' >> $babel_script
161
     echo 'ifconfig $IFACE down' >> $babel_script
162
     echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script
162
     echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script
163
-    echo "$WIFI_CHANNEL essid \"$ESSID\"" >> $babel_script
163
+    echo "$WIFI_CHANNEL essid \"$WIFI_SSID\"" >> $babel_script
164
     echo 'ifconfig $IFACE up' >> $babel_script
164
     echo 'ifconfig $IFACE up' >> $babel_script
165
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
165
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
166
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
166
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
325
     echo 'fi' >> $babel_script
325
     echo 'fi' >> $babel_script
326
     echo 'ifconfig $IFACE down' >> $babel_script
326
     echo 'ifconfig $IFACE down' >> $babel_script
327
     echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script
327
     echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script
328
-    echo "$WIFI_CHANNEL essid \"$ESSID\"" >> $babel_script
328
+    echo "$WIFI_CHANNEL essid \"$WIFI_SSID\"" >> $babel_script
329
     echo 'ifconfig $IFACE up' >> $babel_script
329
     echo 'ifconfig $IFACE up' >> $babel_script
330
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
330
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
331
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
331
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
774
     echo 'fi' >> $BATMAN_SCRIPT
774
     echo 'fi' >> $BATMAN_SCRIPT
775
     echo '' >> $BATMAN_SCRIPT
775
     echo '' >> $BATMAN_SCRIPT
776
     echo '# Mesh definition' >> $BATMAN_SCRIPT
776
     echo '# Mesh definition' >> $BATMAN_SCRIPT
777
-    echo "ESSID=$ESSID" >> $BATMAN_SCRIPT
777
+    echo "WIFI_SSID=$WIFI_SSID" >> $BATMAN_SCRIPT
778
     echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT
778
     echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT
779
     echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT
779
     echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT
780
     echo '' >> $BATMAN_SCRIPT
780
     echo '' >> $BATMAN_SCRIPT
812
     echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT
812
     echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT
813
     echo '        return' >> $BATMAN_SCRIPT
813
     echo '        return' >> $BATMAN_SCRIPT
814
     echo '    fi' >> $BATMAN_SCRIPT
814
     echo '    fi' >> $BATMAN_SCRIPT
815
-    echo '    echo "info: enabling batman-adv mesh network $ESSID on $IFACE"' >> $BATMAN_SCRIPT
815
+    echo '    echo "info: enabling batman-adv mesh network $WIFI_SSID on $IFACE"' >> $BATMAN_SCRIPT
816
 
816
 
817
     echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT
817
     echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT
818
     echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT
818
     echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT
832
     echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT
832
     echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT
833
     echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT
833
     echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT
834
     echo '    iwconfig $IFACE enc off' >> $BATMAN_SCRIPT
834
     echo '    iwconfig $IFACE enc off' >> $BATMAN_SCRIPT
835
-    echo '    iwconfig $IFACE mode ad-hoc essid $ESSID channel $CHANNEL' >> $BATMAN_SCRIPT
835
+    echo '    iwconfig $IFACE mode ad-hoc essid $WIFI_SSID channel $CHANNEL' >> $BATMAN_SCRIPT
836
     echo '    sleep 1' >> $BATMAN_SCRIPT
836
     echo '    sleep 1' >> $BATMAN_SCRIPT
837
     echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT
837
     echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT
838
     echo '' >> $BATMAN_SCRIPT
838
     echo '' >> $BATMAN_SCRIPT

+ 141
- 0
src/freedombone-wifi 查看文件

1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# Wifi configuration tools
12
+
13
+# License
14
+# =======
15
+#
16
+# Copyright (C) 2016 Bob Mottram <bob@robotics.uk.to>
17
+#
18
+# This program is free software: you can redistribute it and/or modify
19
+# it under the terms of the GNU Affero General Public License as published by
20
+# the Free Software Foundation, either version 3 of the License, or
21
+# (at your option) any later version.
22
+#
23
+# This program is distributed in the hope that it will be useful,
24
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
+# GNU Affero General Public License for more details.
27
+#
28
+# You should have received a copy of the GNU Affero General Public License
29
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
30
+
31
+PROJECT_NAME='freedombone'
32
+
33
+export TEXTDOMAIN=${PROJECT_NAME}-wifi
34
+export TEXTDOMAINDIR="/usr/share/locale"
35
+
36
+CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
37
+COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
38
+
39
+WIFI_DEVICE=wlan0
40
+WIFI_TYPE='wpa2-psk'
41
+WIFI_SSID=
42
+WIFI_PASSPHRASE=
43
+
44
+function wifi_get_psk {
45
+    ssid=$1
46
+    passphrase=$2
47
+
48
+    psk=$(wpa_passphrase "$ssid" "$passphrase" | grep 'psk=' | sed -n 2p | awk -F '=' '{print $2}')
49
+    echo $psk
50
+}
51
+
52
+function wifi_wpa2_psk {
53
+    ssid=$1
54
+    passphrase=$2
55
+    psk=$(wifi_get_psk "$ssid" "$passphrase")
56
+    echo "auto $WIFI_DEVICE" > /etc/network/interfaces.d/wifi
57
+    echo 'iface $WIFI_DEVICE inet dhcp' >> /etc/network/interfaces.d/wifi
58
+    echo "    wpa-ssid $ssid" >> /etc/network/interfaces.d/wifi
59
+    echo "    wpa-psk $psk" >> /etc/network/interfaces.d/wifi
60
+}
61
+
62
+function wifi_none {
63
+    ssid=$1
64
+    echo "auto $WIFI_DEVICE" > /etc/network/interfaces.d/wifi
65
+    echo 'iface $WIFI_DEVICE inet dhcp' >> /etc/network/interfaces.d/wifi
66
+    echo "    wireless-essid $ssid" >> /etc/network/interfaces.d/wifi
67
+}
68
+
69
+function show_help {
70
+    echo ''
71
+    echo $"${PROJECT_NAME}-wifi -d [device] -t [type] -s [ssid] -p [passphrase]"
72
+    echo ''
73
+    echo $'Wifi configuration tool'
74
+    echo ''
75
+    echo $'     --help                   Show help'
76
+    echo $'  -d --device [name]          Device name'
77
+    echo $'  -t --type [wpa2-psk|none]   Security type'
78
+    echo $'  -s --ssid [id]              Set SSID'
79
+    echo $'  -p --passphrase [text]      Set passphrase'
80
+    echo ''
81
+    exit 0
82
+}
83
+
84
+while [[ $# > 1 ]]
85
+do
86
+    key="$1"
87
+
88
+    case $key in
89
+        --help)
90
+            show_help
91
+            ;;
92
+        -d|--device)
93
+            shift
94
+            WIFI_DEVICE=${1}            
95
+            ;;
96
+        -t|--type)
97
+            shift
98
+            WIFI_TYPE=${1}          
99
+            ;;
100
+        -s|--ssid)
101
+            shift
102
+            WIFI_SSID=${1}          
103
+            ;;
104
+        -p|--pass|--passphrase)
105
+            shift
106
+            WIFI_PASSPHRASE=${1}            
107
+            ;;
108
+        *)
109
+            # unknown option
110
+            ;;
111
+    esac
112
+    shift
113
+done
114
+
115
+if [ ! $WIFI_SSID ]; then
116
+    echo $'No SSID given'
117
+    exit 1
118
+fi
119
+
120
+if [[ $WIFI_TYPE != 'none' ]]; then
121
+    if [ ! $WIFI_PASSPHRASE ]; then
122
+        echo $'No wifi passphrase was given'
123
+        exit 2
124
+    fi  
125
+fi
126
+
127
+if [[ $WIFI_TYPE == 'wpa2-psk' ]]; then
128
+    if [ ! -d /etc/wpa_supplicant ]; then
129
+        echo $'wpasupplicant package is not installed'
130
+        exit 3
131
+    fi  
132
+    wifi_wpa2_psk "$WIFI_SSID" "$WIFI_PASSPHRASE"
133
+    exit 0
134
+fi
135
+
136
+if [[ $WIFI_TYPE == 'none' ]]; then
137
+    wifi_none "$WIFI_SSID"
138
+    exit 0
139
+fi
140
+
141
+exit 0