Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6318
Последний выпуск: 19.06.2015

помогите улучшить bash-скрипт настройки суппликанта

57K
09 марта 2010 года
IIpaIIop
3 / / 09.03.2010
1. Как сделать в конце проверку на доступность какого-либо сервера, и если он не доступен(сеть настроена не правильно), то повторить скрипт.
2. Можно ли как-то идентифицировать сетевые карты, к которым подключен кабель, например есть eth0 eth1 , кабель подключен к eth1 и именно на него надо настраивать.
Код:
#!/bin/bash
echo 'Введите логин'
read login
echo 'Введите пароль'
read passwd
echo "ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity=\""$login"\"
password=\""$passwd"\"
}" > /etc/wpa_supplicant.conf
echo "auto eth0
iface eth0 inet dhcp
  wpa-driver wired
  wpa-conf /etc/wpa_supplicant.conf" > /etc/network/interfaces
sleep 3
ifdown eth0
sleep 3
ifup eth0
x-www-browser http://kirovnet.ru
exit 0
536
10 марта 2010 года
alex-kniaz
382 / / 07.08.2008
первый пункт можно замутить через пинг. Проблеиа в том что будет тестироваться работа какого-либо конкретного сервака
Т.е. типа
 
Код:
PINGRES = `ping ya.ru опции`
if [ проверяем PINGRES на соответствие шаблону, хз как ]
#если соответствует шаблону - пинг удался
...
else
  #далее травим командный интерпретактор а самих себя ещё раз
  bash myscript
fi

Проверку на соотвествие шаблону можно пытаться сделать регулярками, но неизвестно знает ли о них bash
412
12 марта 2010 года
grgdvo
323 / / 04.07.2007
1. С пингом поддерживаю. ICMP - это то, что надо для проверки доступности хоста. Это стандарт! Команда ping возвращает 1 (единицу), если не получено ни одного echo_reply от хоста, 2 (двойку), если возникили другие ошибки и 0 в остальных случаях. То есть проверка сводится к
 
Код:
ping -с 10 www.kirovnet.ru > /dev/null
if [ $? == 0 ] ; then
# хост доступен
fi

2. read для пароля лучше использовать с опцией "-s" (вроде не ошибся). Тогда будет подавление символов при вводе.
3. Для формирования файлов также можно использовать конструкцию вида
 
Код:
(cat << EOF
ap_scan=0
network={
  key_mgmt=IEEE8021X
  eap=MD5
  identity="${login}"
  password="${passwd}"
}
EOF
) > /etc/wpa_supplicant.conf

для меня - так наглядней
4. Не специалист по настройке wifi, но ESSID может еще надо указать?
5. По поводу цикличности проверки это легко, выбирай на вкус for или while. man bash в помощь
57K
12 марта 2010 года
IIpaIIop
3 / / 09.03.2010
Всем спасибо, вот что получилось
Код:
#!/bin/bash

for i in 1 2
do
echo -n 'Введите логин';
if [$i eq 2]; then
echo '. Возможно, первый раз он был введен неправильно:';
else
echo ':';
fi;
read login
echo -n 'Введите пароль';
if [$i eq 2]; then
echo '. Возможно, первый раз он был введен неправильно:';
else
echo ':';
fi;
read passwd

for i in `seq 0 3`;
do
echo "ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity=\""$login"\"
password=\""$passwd"\"
}" > /etc/wpa_supplicant.conf
echo "auto eth$i
iface eth0 inet dhcp
  wpa-driver wired
  wpa-conf /etc/wpa_supplicant.conf" > /etc/network/interfaces
sleep 3
ifdown eth0
sleep 3
ifup eth0
ping -c 1 -w 5 kirovnet.ru &>/dev/null
if [ $? -eq 0 ]; then
x-www-browser kirovnet.ru;
exit 0;
fi;
done;
done;

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог