浏览代码

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,6 +441,9 @@ EXTERNAL_IP_SERVICES=( \
441 441
 
442 442
 WIFI_CHANNEL=2
443 443
 WIFI_INTERFACE=wlan0
444
+WIFI_TYPE='wpa2-psk'
445
+WIFI_SSID=
446
+WIFI_PASSPHRASE=
444 447
 
445 448
 # cjdns settings
446 449
 ENABLE_CJDNS="no"
@@ -457,7 +460,6 @@ CJDCMD_COMMIT='973cca6ed0eecf9041c3403a40193c0b1291b808'
457 460
 # B.A.T.M.A.N settings
458 461
 ENABLE_BATMAN="no"
459 462
 BATMAN_CELLID='any'
460
-ESSID='mesh'
461 463
 
462 464
 # Babel mesh
463 465
 ENABLE_BABEL="no"
@@ -1061,6 +1063,18 @@ function read_configuration {
1061 1063
         if [[ $CONFIGURATION_FILE != "/root/${PROJECT_NAME}.cfg" ]]; then
1062 1064
             cp $CONFIGURATION_FILE /root/${PROJECT_NAME}.cfg
1063 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 1078
         if grep -q "SYNCTHING_ID" $CONFIGURATION_FILE; then
1065 1079
             SYNCTHING_ID=$(grep "SYNCTHING_ID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1066 1080
         fi
@@ -1223,9 +1237,6 @@ function read_configuration {
1223 1237
         if grep -q "DH_KEYLENGTH" $CONFIGURATION_FILE; then
1224 1238
             DH_KEYLENGTH=$(grep "DH_KEYLENGTH" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1225 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 1240
         if grep -q "IRC_PORT" $CONFIGURATION_FILE; then
1230 1241
             IRC_PORT=$(grep "IRC_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1231 1242
         fi
@@ -1235,9 +1246,6 @@ function read_configuration {
1235 1246
         if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then
1236 1247
             BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1237 1248
         fi
1238
-        if grep -q "ESSID" $CONFIGURATION_FILE; then
1239
-            ESSID=$(grep "ESSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1240
-        fi
1241 1249
         if grep -q "TOX_PORT" $CONFIGURATION_FILE; then
1242 1250
             TOX_PORT=$(grep "TOX_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1243 1251
         fi
@@ -3097,7 +3105,7 @@ function mesh_batman {
3097 3105
         echo '' >> /home/$MY_USERNAME/README
3098 3106
         echo 'Mesh Networking (B.A.T.M.A.N)' >> /home/$MY_USERNAME/README
3099 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 3109
         echo "Mesh cell ID: $BATMAN_CELLID" >> /home/$MY_USERNAME/README
3102 3110
         echo "Mesh wifi channel: $WIFI_CHANNEL" >> /home/$MY_USERNAME/README
3103 3111
         chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README

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

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

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


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

@@ -42,13 +42,13 @@ if [[ $1 == "start" ]]; then
42 42
 fi
43 43
 
44 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 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 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 53
 CELLID='any'
54 54
 
@@ -93,7 +93,7 @@ start() {
93 93
         echo 'error: unable to find wifi interface, not enabling batman-adv mesh'
94 94
         return
95 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 98
     systemctl stop network-manager
99 99
     sleep 5
@@ -109,7 +109,7 @@ start() {
109 109
     ifconfig $IFACE down
110 110
     ifconfig $IFACE mtu 1532
111 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 113
     sleep 1
114 114
     iwconfig $IFACE ap $CELLID
115 115
 
@@ -214,9 +214,9 @@ case "$1" in
214 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 221
 esac
222 222
 exit 0

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

@@ -42,7 +42,7 @@ WIFI_INTERFACE='wlan0'
42 42
 
43 43
 # B.A.T.M.A.N settings
44 44
 BATMAN_CELLID='02:BA:00:00:03:01'
45
-ESSID='mesh'
45
+WIFI_SSID='mesh'
46 46
 
47 47
 # Babel
48 48
 BABEL_PORT=6696
@@ -160,7 +160,7 @@ function mesh_babel {
160 160
     echo 'systemctl stop network-manager' >> $babel_script
161 161
     echo 'ifconfig $IFACE down' >> $babel_script
162 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 164
     echo 'ifconfig $IFACE up' >> $babel_script
165 165
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
166 166
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
@@ -325,7 +325,7 @@ function mesh_babel_client {
325 325
     echo 'fi' >> $babel_script
326 326
     echo 'ifconfig $IFACE down' >> $babel_script
327 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 329
     echo 'ifconfig $IFACE up' >> $babel_script
330 330
     echo -n 'ifconfig $IFACE:avahi ' >> $babel_script
331 331
     echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script
@@ -774,7 +774,7 @@ function mesh_batman_client {
774 774
     echo 'fi' >> $BATMAN_SCRIPT
775 775
     echo '' >> $BATMAN_SCRIPT
776 776
     echo '# Mesh definition' >> $BATMAN_SCRIPT
777
-    echo "ESSID=$ESSID" >> $BATMAN_SCRIPT
777
+    echo "WIFI_SSID=$WIFI_SSID" >> $BATMAN_SCRIPT
778 778
     echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT
779 779
     echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT
780 780
     echo '' >> $BATMAN_SCRIPT
@@ -812,7 +812,7 @@ function mesh_batman_client {
812 812
     echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT
813 813
     echo '        return' >> $BATMAN_SCRIPT
814 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 817
     echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT
818 818
     echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT
@@ -832,7 +832,7 @@ function mesh_batman_client {
832 832
     echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT
833 833
     echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT
834 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 836
     echo '    sleep 1' >> $BATMAN_SCRIPT
837 837
     echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT
838 838
     echo '' >> $BATMAN_SCRIPT

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

@@ -0,0 +1,141 @@
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