IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> wlan-static для live-sysv, wifi в сети со статической адресацией
Поделиться
speccyfighter
сообщение 12.2.2018, 17:33
Сообщение #1


Крупный специалист
*****

Группа: Пользователь
Сообщений: 461
Регистрация: 1.5.2013
Вставить ник
Цитата
Пользователь №: 2379
Страна: Беларусь
Город: Не указан
Пол: Муж.



Репутация: 1


Текущий вариант скриптов для конфигурирования WiFi на беспроводной статике.
Конфигуратор интерактивный:
- По-русски задаёт простые вопросы и просит ввода.
Пароль на точку доступа не знаю как скрыть при вводе. Не сохранять в историю можно покиливанием сессии: kill -9 $$

В конфигуратор скорее всего надо добавить подсказки запроса ввода, отображающие формат ввода в качестве примеров ввода. Кроме пароля к точке доступа. Для пользователя, который по уровню близок к нулю.

Скрипты завязаны именно на лайв live-sysv, поскольку он уже на первом старте конфигурирует dhcp и сеть на первом старте _уже_ сконфигурирована как dhcp, а для статики это надо выкручивать назад.

Сначала запускается конфигуратор:
- Просьба конфигуратора ввода чего-то - ввод пользователем.
Выполняется один раз.

После конфигуратора и после каждого старта лайва запускается старт-скрипт для поднятия сети.

В скриптах много мусора, он будет болтаться вплоть до релиза.

Конфигуратор::
Код
$ cat /run/media/user/alt-live-storage/usr/sbin/wlan-static-conf
#!/bin/bash

rfkill unblock all
sleep 1

killall dhcpcd &>/dev/null
chkconfig livecd-net-eth off &>/dev/null
# /etc/rc.d/init.d/network stop &>/dev/null
# chkconfig network off &>/dev/null


# Блокировка dhcp
#
# Вручную в option для интерфейсов,
# сменить в BOOTPROTO с dhcp на static
#


## Перевод BOOTPROTO с dhcp на static
grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
while read NETIFACE
    do
    sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/' /etc/net/ifaces/$NETIFACE/options
done
/etc/rc.d/init.d/network restart &>/dev/null


# Настройка, тест, не удалять!!!
## Очистка предыдущих настроек сети
#ETCDIR=/etc/net/ifaces
#[ -d "$ETCDIR" ] || return 1
#RMDIR=`find "$ETCDIR" -mindepth 1 -maxdepth 1 -xtype d -name "*"|sort -u|grep -E -vw 'ifaces/default|ifaces/lo|ifaces/unknown'`
#rm -rf "$ETCDIR"


# Для отладки, следующие два блока не раскомментировать!!!
# Это необходимый мусор!!!

# Создание каталогов сетевых интерфейсов
#SYSDIR=/sys/class/net
#[ -d "$SYSDIR" ] || return 1
#}
#find "$SYSDIR" -mindepth 1 -maxdepth 1 -xtype d -printf '%f\n' |
#    while read IFACE; do
#        read TYPE < "$SYSDIR/$IFACE/type"
#        [ "$TYPE" = 1 ] && echo "$IFACE"    # ethernet
#    done
#} >

#[ -n "$1" ] || return 1
#[ -d "$ETCDIR" ] || return 2
#IFACEDIR="$ETCDIR/$1"
#[ ! -d "$IFACEDIR" ] || return 0
#echo -n "$1 "
# NB: 3 seconds means STP ports will stay down => unconfigured
#mkdir -p "$IFACEDIR" && {
#    echo TYPE=eth
#    echo BOOTPROTO=dhcp
#    echo DHCP_TIMEOUT=7
#} > "$IFACEDIR/options"


echo -e "\nКонфигуратор WIFI в сети со статической адресацией\nОшибки не обрабатываются, будьте внимательны"

# Конфигурирование DNS
echo -e "\nВведите IP адрес первого DNS сервера:"
read DNS1
echo -e "\nВведите IP адрес второго DNS сервера:"
read DNS2

#
# DNS-ы для беспроводного интерфейса. Отладочный блок!!!
#
#WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
#D=`echo -e "nameserver $DNS1\nnameserver $DNS2"`
#    echo "$D" >/etc/net/ifaces/$WLANIFACE/resolv.conf
#    /sbin/resolvconf -a "$WLANIFACE" </etc/net/ifaces/$WLANIFACE/resolv.conf

D=`echo -e "nameserver $DNS1\nnameserver $DNS2"`
grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
while read NETIFACE
    do
# Настройка, тест, отладочная часть, не удалять!!!
#    mkdir -p /etc/net/ifaces/$NETIFACE
#    echo TYPE=eth >/etc/net/ifaces/$NETIFACE/options
    echo "$D" >/etc/net/ifaces/$NETIFACE/resolv.conf
    /sbin/resolvconf -a "$NETIFACE" </etc/net/ifaces/$NETIFACE/resolv.conf
done


# Имя беспроводного интерфейса WIFI
WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
echo WLANIFACE=$WLANIFACE >/etc/net/wlan-static


ip link set $WLANIFACE up

# Конфигурирование точки доступа
echo -e "\nДоступные точки доступа:"
iwlist $WLANIFACE scan | grep -i ssid

echo -e "\nВведите имя точки доступа:"
read NAMESSID
echo -e "\nВведите пароль:"
read PASWSSID


wpa_passphrase $NAMESSID $PASWSSID > /etc/wpa_supplicant/wpa_supplicant.conf


echo -e "\nВведите ваш IP адрес:"
read IPADDR
echo IPADDR=$IPADDR >>/etc/net/wlan-static
echo -e "\nВведите сетевую маску:"
read NETMASK
echo NETMASK=$NETMASK >>/etc/net/wlan-static
echo -e "\nВведите IP адрес шлюза:"
read IPGATE
echo IPGATE=$IPGATE >>/etc/net/wlan-static


echo -e "\nДля поднятия беспроводной сети WIFI,\nс правами root запустите wlan-static-start\n"



Стартер-скрипт:
Код
$ cat /run/media/user/alt-live-storage/usr/sbin/wlan-static-start
#!/bin/bash

rfkill unblock all

sleep 2

killall wpa_supplicant &>/dev/null



WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
IPADDR=`grep IPADDR /etc/net/wlan-static | awk -F '=' '{print $2}'`
NETMASK=`grep NETMASK /etc/net/wlan-static | awk -F '=' '{print $2}'`
IPGATE=`grep IPGATE /etc/net/wlan-static | awk -F '=' '{print $2}'`


ip link set $WLANIFACE up



#grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
#while read NETIFACE
#    do
## Настройка, тест, отладочная часть, не удалять!!!
#    /sbin/resolvconf -a "$NETIFACE" </etc/net/ifaces/$NETIFACE/resolv.conf
#done



wpa_supplicant -B -D wext -i $WLANIFACE -c /etc/wpa_supplicant/wpa_supplicant.conf

ip addr add $IPADDR/$NETMASK dev $WLANIFACE
ip route add default via $IPGATE

echo -e "\nПосле загрузки или перезагрузки компьютера,\nдля поднятия беспроводной сети WIFI,\nвыполните эту команду.\n"



Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.2.2018, 23:07
Сообщение #2


Крупный специалист
*****

Группа: Пользователь
Сообщений: 461
Регистрация: 1.5.2013
Вставить ник
Цитата
Пользователь №: 2379
Страна: Беларусь
Город: Не указан
Пол: Муж.



Репутация: 1


Вот гадство-то, а?..
Как же не хотелось грохать первоначальные настройки (dhcp), а пришлось.
Всё на HP Compaq NX6110 работает, беспроводная статика поднимается, но стоило загрузить лайв на G50-80, как всё рухнуло в один момент.
Пришлось раскомментировать блок изничтожающий всё что не входит в пакет etcnet и методом псевдонаучных размышлений вставить пару-тройку (?) строк дополнительно.

В текущей инкарнации скрипт конфинурации позволяет конфигурировать и переконфигурировать беспроводную сеть на статике без перезагрузки. Задаёт тупые вопросы с подсказками и требует таких же тупых ответов. После завершения настройки, конфигуратор подскажет что нужно запустить и как.

Всё ещё много закомментированного мусора в скриптах. И что-то мне подсказывает, что он может пригодиться.

В этой инкарнации, скрипты отработали и на NX6110 и на G50-80. И с повторным переконфигурированием и с перезагрузкой.
Знаю что кто-то наверняка найдёт в них косяки, но тапками не кидаться.

Скрипт конфигуратора WiFi в сети со статической адресацией (проверен на NX6110 и G50-80)
Код
#!/bin/bash

rfkill unblock all
sleep 1

killall dhcpcd &>/dev/null
chkconfig livecd-net-eth off &>/dev/null
# /etc/rc.d/init.d/network stop &>/dev/null
# chkconfig network off &>/dev/null


# Блокировка dhcp
#
# Вручную в option для интерфейсов,
# сменить в BOOTPROTO с dhcp на static
#


### Перевод BOOTPROTO с dhcp на static
#grep . /sys/class/net/*/uevent | grep -v 'net/lo/'| grep INTERFACE | awk -F '=' '{print $2}' | \
#while read NETIFACE
#    do
#    sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/' /etc/net/ifaces/$NETIFACE/options
#done
#/etc/rc.d/init.d/network restart &>/dev/null


# Настройка, тест, не удалять!!!
## Очистка предыдущих настроек сети
ETCDIR=/etc/net/ifaces
[ -d "$ETCDIR" ] || return 1
RMDIR=`find "$ETCDIR" -mindepth 1 -maxdepth 1 -xtype d -name "*"|sort -u|grep -E -vw 'ifaces/default|ifaces/lo|ifaces/unknown'`
rm -rf "$ETCDIR"
killall wpa_supplicant &>/dev/null
rm -f /etc/wpa_supplicant/wpa_supplicant.conf &>/dev/null
/etc/rc.d/init.d/network restart &>/dev/null


#WLAN=`grep INTERFACE /sys/class/net/wlan0/uevent | cut -f2 -d '='`
#mkdir -p $ETCDIR/$WLAN
#touch $ETCDIR/$WLAN/resolv.conf
#touch $ETCDIR/$WLAN/options
#{
#    echo TYPE=eth
#    echo BOOTPROTO=dhcp
#    echo DHCP_TIMEOUT=7
#} > "$ETCDIR/$WLAN/options

# Для отладки, следующие два блока не раскомментировать!!!
# Это необходимый мусор!!!

# Создание каталогов сетевых интерфейсов
#SYSDIR=/sys/class/net
#[ -d "$SYSDIR" ] || return 1
#}
#find "$SYSDIR" -mindepth 1 -maxdepth 1 -xtype d -printf '%f\n' |
#    while read IFACE; do
#        read TYPE < "$SYSDIR/$IFACE/type"
#        [ "$TYPE" = 1 ] && echo "$IFACE"    # ethernet
#    done
#} >

#[ -n "$1" ] || return 1
#[ -d "$ETCDIR" ] || return 2
#IFACEDIR="$ETCDIR/$1"
#[ ! -d "$IFACEDIR" ] || return 0
#echo -n "$1 "
# NB: 3 seconds means STP ports will stay down => unconfigured
#mkdir -p "$IFACEDIR" && {
#    echo TYPE=eth
#    echo BOOTPROTO=dhcp
#    echo DHCP_TIMEOUT=7
#} > "$IFACEDIR/options"


echo -e "\nКонфигуратор WIFI в сети со статической адресацией\nОшибки не обрабатываются, будьте внимательны"

# Конфигурирование DNS
echo -e "\nВведите IP адрес первого DNS сервера:"
echo "Например:  8.8.8.8"
read DNS1
echo -e "\nВведите IP адрес второго DNS сервера:"
echo "Например:  8.8.4.4"
read DNS2

#
# DNS-ы для беспроводного интерфейса. Отладочный блок!!!
#
#WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
#D=`echo -e "nameserver $DNS1\nnameserver $DNS2"`
#    echo "$D" >/etc/net/ifaces/$WLANIFACE/resolv.conf
#    /sbin/resolvconf -a "$WLANIFACE" </etc/net/ifaces/$WLANIFACE/resolv.conf


# Конфигурироание интерфейсов
D=`echo -e "nameserver $DNS1\nnameserver $DNS2"`
grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
while read NETIFACE
    do
# Настройка, тест, отладочная часть, не удалять!!!
    mkdir -p $ETCDIR/$NETIFACE
    echo TYPE=eth >$ETCDIR/$NETIFACE/options
    echo BOOTPROTO=static >>$ETCDIR/$NETIFACE/options
    echo "$D" >$ETCDIR/$NETIFACE/resolv.conf
    /sbin/resolvconf -a "$NETIFACE" <$ETCDIR/$NETIFACE/resolv.conf
done
/etc/rc.d/init.d/network restart &>/dev/null


#D=`echo -e "nameserver $DNS1\nnameserver $DNS2"`
#grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
#while read NETIFACE
#    do
## Настройка, тест, отладочная часть, не удалять!!!
##    mkdir -p /etc/net/ifaces/$NETIFACE
##    echo TYPE=eth >/etc/net/ifaces/$NETIFACE/options
##    echo BOOTPROTO=static >>/etc/net/ifaces/$NETIFACE/options
#    echo "$D" >/etc/net/ifaces/$NETIFACE/resolv.conf
#    /sbin/resolvconf -a "$NETIFACE" </etc/net/ifaces/$NETIFACE/resolv.conf
#done


# Имя беспроводного интерфейса WIFI
WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
echo WLANIFACE=$WLANIFACE >/etc/net/wlan-static



#ip link set $WLANIFACE down &>/dev/null
#ip link set $WLANIFACE up


ifdown $WLANIFACE
ifup $WLANIFACE
ip link set $WLANIFACE up
sleep 1

# Конфигурирование точки доступа
echo -e "\nДоступные точки доступа:"
#iwlist $WLANIFACE scan | grep -i ssid
#iw dev $WLANIFACE scan ap-force | grep -i ssid
ifconfig $WLANIFACE up && iwlist $WLANIFACE scan | grep -i ssid

echo -e "\nВведите имя точки доступа:"
read NAMESSID
echo -e "\nВведите пароль:"
read PASWSSID


wpa_passphrase $NAMESSID $PASWSSID > /etc/wpa_supplicant/wpa_supplicant.conf


echo -e "\nВведите ваш IP адрес:"
echo "Например:  192.168.1.3"
read IPADDR
echo IPADDR=$IPADDR >>/etc/net/wlan-static
echo -e "\nВведите сетевую маску:"
echo "Например:  255.255.255.0"
read NETMASK
echo NETMASK=$NETMASK >>/etc/net/wlan-static
echo -e "\nВведите IP адрес шлюза:"
echo "Например:  192.168.1.1"
read IPGATE
echo IPGATE=$IPGATE >>/etc/net/wlan-static


echo -e "\nДля поднятия беспроводной сети WIFI,\nс правами root запустите wlan-static-start\n"


Стартер-скрипт для поднятия WiFi в сети со статической адресацией (проверен на NX6110 и G50-80)
Код
#!/bin/bash

rfkill unblock all

sleep 2

killall wpa_supplicant &>/dev/null



WLANIFACE=`grep INTERFACE $(grep -l wlan /sys/class/net/*/uevent)|awk -F '=' '{print $2}'`
IPADDR=`grep IPADDR /etc/net/wlan-static | awk -F '=' '{print $2}'`
NETMASK=`grep NETMASK /etc/net/wlan-static | awk -F '=' '{print $2}'`
IPGATE=`grep IPGATE /etc/net/wlan-static | awk -F '=' '{print $2}'`


ip link set $WLANIFACE up



#grep . /sys/class/net/*/uevent | grep -v lo/ | grep INTERFACE | awk -F '=' '{print $2}' | \
#while read NETIFACE
#    do
## Настройка, тест, отладочная часть, не удалять!!!
#    /sbin/resolvconf -a "$NETIFACE" </etc/net/ifaces/$NETIFACE/resolv.conf
#done



wpa_supplicant -B -D wext -i $WLANIFACE -c /etc/wpa_supplicant/wpa_supplicant.conf

ip addr add $IPADDR/$NETMASK dev $WLANIFACE
ip route add default via $IPGATE

sleep 1

echo -e "\nПосле загрузки или перезагрузки компьютера,\nдля поднятия беспроводной сети WIFI,\nвыполните эту команду.\n"


Результат работы скриптов на скриншоте.
Немного потыцкано Enter-ом чтобы скрыть пароль.
Принимаются любые посказки как при вводе скрыть пароль при наборе, кодом в скриптах. Шоб не светить его при наборе, ибо нафик такой подарок не нужен.

Прикрепленные файлы
Прикрепленный файл  wlan_static_conf_and_start.png ( 20.68 килобайт ) Кол-во скачиваний: 1
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
dango_
сообщение 14.2.2018, 9:15
Сообщение #3


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1143
Регистрация: 10.4.2015
Вставить ник
Цитата
Пользователь №: 2798
Страна: Казахстан
Город: Уральск
Пол: Муж.



Репутация: 5


Цитата(speccyfighter @ 14.2.2018, 0:07) *
Принимаются любые посказки как при вводе скрыть пароль при наборе, кодом в скриптах. Шоб не светить его при наборе, ибо нафик такой подарок не нужен.

https://habrahabr.ru/company/ruvds/blog/326328/
Цитата
Иногда то, что вводит пользователь в ответ на вопрос скрипта, лучше на экране не показывать. Например, так обычно делают, запрашивая пароли. Ключ -s команды read предотвращает отображение на экране данных, вводимых с клавиатуры. На самом деле, данные выводятся, но команда read делает цвет текста таким же, как цвет фона.

Код
#!/bin/bash
read -s -p "Enter your password: " pass
echo "Is your password really $pass? "

Подойдет?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
dango_
сообщение 14.2.2018, 9:27
Сообщение #4


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1143
Регистрация: 10.4.2015
Вставить ник
Цитата
Пользователь №: 2798
Страна: Казахстан
Город: Уральск
Пол: Муж.



Репутация: 5


Варианты есть здесь: https://stackoverflow.com/questions/3980668...without-echoing
Один из них через выключение echo:
Код
#!/bin/sh

# Read secret string
read_secret()
{
    # Disable echo.
    stty -echo

    # Set up trap to ensure echo is enabled before exiting if the script
    # is terminated while echo is disabled.
    trap 'stty echo' EXIT

    # Read secret.
    read "$@"

    # Enable echo.
    stty echo
    trap - EXIT

    # Print a newline because the newline entered by the user after
    # entering the passcode is not echoed. This ensures that the
    # next line of output begins at a new line.
    echo
}

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 14.2.2018, 12:48
Сообщение #5


Крупный специалист
*****

Группа: Пользователь
Сообщений: 461
Регистрация: 1.5.2013
Вставить ник
Цитата
Пользователь №: 2379
Страна: Беларусь
Город: Не указан
Пол: Муж.



Репутация: 1


thnx
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 14.2.2018, 21:23
Сообщение #6


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Мужики, если что могу сделать сборку на этих выходных, либо через 2 недели ( следующая неделя выпадает по работе ). Вообщем смотрите сами , можно особенно не торопиться . Яндекс диск штука интересная показывает количество закачек.
Предыдущая версия 6 закачек, текущая 2 - делаем дистрибутив для себя и небольшого числа товарищей кому за ... и тех
кто помнит cp/m, dos, is-dos , tr-dos и т.п. Я еще помню sp-dos в добавок к этому списку smile.gif

Сообщение отредактировал kostyalamer - 14.2.2018, 21:28
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 22.2.2018, 15:20
Сообщение #7


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра как там скрипт продвигается ? Если что могу помочь с опакечиванием- хотя у меня с ним , как ты уже видел , иногда бывают разные грабли wink.gif Кстати, все не так плохо - эту версию скачали 6 человек, так что работаем не только для себя.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 28.3.2024, 15:54