Настройка сети Wi-Fi из консоли
Если старт сети производится из-под пользователя
su Password:
Убиваем предыдущую сессию wpa_supplicant, если была запущена.
[ $(pidof wpa_supplicant) ] && kill $(pidof wpa_supplicant)
Если нет конфигурационного файла wpa_supplicant.conf, создаём
wpa_passphrase MYUSSID MYPASSWORD > /etc/wpa_supplicant.conf
Определяем интерфейс Wi-Fi
basename $(dirname /sys/class/net/*/phy80211) wlan0
Запускаем соединение с Wi-Fi роутером
wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf Successfully initialized wpa_supplicant
Получаем IP автоматически
dhcpcd wlan0 dhcpcd[2217]: version 6.4.7 starting dhcpcd[2217]: DUID 00:01:00:01:1b:ee:81:e8:20:68:9d:3a:89:c2 dhcpcd[2217]: wlan0: IAID 9d:3a:89:c2 dhcpcd[2217]: wlan0: soliciting a DHCP lease dhcpcd[2217]: wlan0: soliciting an IPv6 router dhcpcd[2217]: wlan0: offered 192.168.1.100 from 192.168.1.1 dhcpcd[2217]: wlan0: leased 192.168.1.100 for 7200 seconds dhcpcd[2217]: wlan0: adding route to 192.168.1.0/24 dhcpcd[2217]: wlan0: adding default route via 192.168.1.1 dhcpcd[2217]: forked to background, child pid 2248
Одна тонкость, для новых версий wpa_supplicant указать драйвер nl80211 вместо wext.
Все одним скриптом:
Запускать от root
#!/bin/sh #wi-fi up (console). DdShurick 25.11.14 version 002 GPL if [ $(whoami) = root ]; then IFACE=$(basename $(dirname /sys/class/net/*/phy80211)) [ $(pidof dhcpcd) ] && dhcpcd -k $IFACE [ $(pidof wpa_supplicant) ] && kill $(pidof wpa_supplicant) if [ "$(cat /sys/class/net/$IFACE/operstate)" != "up" ]; then ifconfig $IFACE up sleep 2 fi echo "Выберите сеть" if iwlist $IFACE scan | grep ESSID; then echo -n "ESSID: " read MYESSID echo -n "Пароль " read MYPASSWD wpa_passphrase $MYESSID $MYPASSWD > /tmp/wpa.conf wpa_supplicant -B -D wext -i $IFACE -c /tmp/wpa.conf dhcpcd $IFACE else echo "Доступные сети не найдены" fi else echo "У вас нет прав на выполнение wifiup, нужны права root" fi
14.07.11 DdShurick
GUI
По просьбе из обсуждения, то же но с GUI
#!/bin/sh #wi-fi up. DdShurick 04.12.14 version 003 which loginroot && loginroot=loginroot || loginroot=sudo [ `id -u` = 0 ] || exec $loginroot $0 IFACE=$(basename $(dirname /sys/class/net/*/phy80211)) [ $(pidof dhcpcd) ] && dhcpcd -k $IFACE [ $(pidof wpa_supplicant) ] && kill $(pidof wpa_supplicant) [ "$(cat /sys/class/net/$IFACE/operstate)" = "up" ] || ifconfig $IFACE up sleep 2 iwlist $IFACE sc | egrep 'Address:|Channel:|Quality|Encryption key:|ESSID:' > /tmp/iwlist export Window="<vbox> <text><label>Найдены сети Wi-Fi</label></text> <list> <variable>MYESSID</variable> $(awk -F \: '/ESSID/ {print "<item>"$2"</item>"}' /tmp/iwlist) </list> <button><label>Подключить</label></button> </vbox>" eval $(gtkdialog -c --program "Window") [ "$EXIT" = "Cancel" -o "$EXIT" = "abort" ] && exit [ "$MYESSID" ] || exit [ "$EXIT" = "Подключить" ] || exit KEY=$(grep $MYESSID -B 1 /tmp/iwlist | awk '/Encryption/ {print $2}') if [ "$KEY" = "key:on" ]; then export Passw="<vbox> <text><label>Введите пароль для $MYESSID</label></text> <entry> <visible>password</visible> <variable>MYPASSWD</variable> </entry> <button><label>Подключить</label></button> </vbox>" eval $(gtkdialog -c --program "Passw") [ "$EXIT" = "Cancel" -o "$EXIT" = "abort" ] && exit [ "$MYPASSWD" ] || exit [ "$EXIT" = "Подключить" ] || exit wpa_passphrase $MYESSID $MYPASSWD | grep -v '#psk' > /tmp/wpa.conf wpa_supplicant -B -D nl80211 -i $IFACE -c /tmp/wpa.conf #wpa_supplicant -B -D wext -i $IFACE -c /tmp/wpa.conf #для старых версий wpa_supplicant dhcpcd $IFACE if [ "$?" = 0 ]; then export Addr="<vbox> <text><label>Соединение с сетью ${MYESSID} установлено.Сохранить настройки для сети ${MYESSID}?</label></text> <button><label>Сохранить</label></button> </vbox>" eval $(gtkdialog -c --program "Addr") [ "$EXIT" = "Cancel" -o "$EXIT" = "abort" ] && exit [ "$EXIT" = "Сохранить" ] || exit MYADDR=$(grep -B 5 USSR /tmp/iwlist | awk '/Address/ {print $5}') cp /tmp/wpa.conf /etc/network-wizard/wireless/wpa_profiles/${MYADDR}.wpa.conf fi elif [ "$KEY" = "key:off" ]; then iwconfig $IFACE essid $MYESSID key off dhcpcd $IFACE fi
Для gtk3 <list> заменить на <tree>
Испытано: PRA, PR-1312-XFCE, AltLinux Simply, Richy. Теоретически должно работать в любом Linux.
Добавлено DdShurick