LINUX.ORG.RU

Скрипт hostapd

 , ,


0

2

Скрипт — запускает wifi точку доступа (hostapd, dnsmasq, и правила в iptables)

Я его запускаю вручную после логина в пользовательский сеанс.

 sudo /home/user/blahblah.sh 

Есть возможность, чтобы он запускался сам во время загрузки системы — без моего участия? И завершал работу во время выключения.

Только есть одно условие, он должен исполняться только после того, как Network-manager поднимет проводную сеть сеть, т.к. скрипт завязан на интерфейс ppp0

Ответ на: комментарий от Deleted

Я обычная «домохозяйка», мне нужно простое решение. Без особого понимания как это работает. Мне хватило геморроя, когда я этот скрипт составляла.

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

Да, sudo без плясок с бубном работает только в интерактивном шелле. А всякие демоны обычно и так запускают скрипты от рута. Единственное - лучше в скрипте либо полные пути к исполняемым файлам указывать, либо переменную $PATH настроить.

om-nom-nimouse ★★ ()
Ответ на: комментарий от OperaSoftvvare

а он отработает, если это bash-скрипт?

Да, подходит любой исполняемый файл, который умеет читать переменные окружения.

И еще вопрос, все «sudo» из скрипта убрать нужно?

Да, скрипт выполняется с правами root.

AITap ★★★★★ ()

он должен исполняться после того, как Network-manager поднимет проводную сеть сеть

/etc/network/if-up.d/

, не?

завершал работу во время выключения

А вот это не понял. Перед выключением он должен исполнится еще раз? Типа

blahblah.sh stop
? Или он висит запущенным все время работы системы?

Zmicier ★★★★★ ()

Если кому интересно:

Сделала через upstart.

Разбираться было лень, почему не заработала полная версия (возможно чуть позже сделаю все красиво).

Поэтому создала «службу», которая тупо запускает скрипт из нужного места.


по условию:
start on net-device-up IFACE=ppp0

выполняется
script
/bin/bash -c '/ect/my_script.sh'
end script

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

управляется командами:

service my_script start (stop, restart)


Ну и при поднятии ppp0 скрипт стартует автоматом, осталось придумать условие для остановки службы))

OperaSoftvvare ★★ ()
Ответ на: комментарий от Zmicier

Или он висит запущенным все время работы системы?

Там в теле скрипта запускается демон hostapd и если его прервать (я это делала ctrl+c) выполнится конец скрипта

OperaSoftvvare ★★ ()

Один нескромный вопрос: а почему именно после старта ppp0 надо скрипт запускать? У меня настроен автостарт hostapd просто по умолчанию, правила фаервола грузятся в rc.local (задолго до появления ppp0), и всё отлично работает.

om-nom-nimouse ★★ ()
Ответ на: комментарий от om-nom-nimouse

Вот окончательный .conf файл в /etc/init

description «WiFi Soft_AP »

start on net-device-up IFACE=ppp0
stop on net-device-removed INTERFACE=ppp0

script

ifconfig wlan0 192.168.0.1

# Start DHCP/DNS server
service dnsmasq restart

# Enable routing
sysctl net.ipv4.ip_forward=1
# Enable NAT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Run access point daemon
hostapd /etc/hostapd/hostapd.conf

# Stop
# Disable NAT
iptables -D POSTROUTING -t nat -o ppp0 -j MASQUERADE
# Disable routing
sysctl net.ipv4.ip_forward=0
# Disable DHCP/DNS server
service dnsmasq stop
end script



Избавилась от отдельного скрипта.

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

Осталось добавить симлинк в /etc/init.d на /lib/init/upstart-job и сервис готов =)

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

Это всё красиво, конечно, только не совсем понятен смысл. Просто «net.ipv4.ip_forward=1» лучше указать в sysctl.conf, в любом случае, при отсутствии ppp0 роутить никто ничего не будет, hostapd лучше перезапускать командой «service hostapd (restart|stop|start)», dnsmasq настроен обычно подхватывать адреса из resolv.conf, а wlan0 лучше всё-таки настроить в /etc/network/interfaces.

om-nom-nimouse ★★ ()
Ответ на: комментарий от OperaSoftvvare

смысл запускать «точку доступа», если нет выхода в сеть?

У меня wlan0 объединён в мост с eth0, который смотрит в домашнюю проводную сеть, и в любом случае при работе роутера можно получить доступ к домашним ресурсам по Wi-Fi. С другой стороны, если ресурсов шаренных нет, можно и выключать. С третьей стороны, он практически ничего не ест, так что можно и забить на выключение.

om-nom-nimouse ★★ ()
Ответ на: комментарий от OperaSoftvvare

Проще было просто добавить сервисы dnsmasq, hostapd в автозагрузку через update-rc.d, настроить interfaces, форвард пкетов включается в sysctl.conf, и создать правила для iptables, которые бы автоматом подхватывались при загрузке. А костылять свой сервис, это как-то неправильно, хоть и работает.

daemonpnz ★★★★★ ()
Ответ на: комментарий от daemonpnz

Проще было просто добавить сервисы dnsmasq, hostapd в автозагрузку через update-rc.d, настроить interfaces, форвард пкетов включается в sysctl.conf, и создать правила для iptables, которые бы автоматом подхватывались при загрузке. А костылять свой сервис, это как-то неправильно, хоть и работает.

Да, и стартовать все это будет в произвольном порядке — как итог ничего работать не будет.

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

Чтобы он не сдох, я его заранее пристрелил. :-)

Кстати, если в данной схеме нетворк манагер попытается управлять интерфейсами и фаерволом, как он любит это делать, хорошего тоже будет мало. Так что рекомендуется его при работе всего этого выключать. Или ppp0 через него поднимается?

om-nom-nimouse ★★ ()
Ответ на: комментарий от om-nom-nimouse

У меня не вышло. Пришлось костылять скрипт, а теперь и сервис в upstart.

У тебя видимо не Ubuntu. В ней есть некоторые подводные камни.

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

У тебя видимо не Ubuntu.

Не, у меня как раз она. :-)

Кое-какие подводный камни обходились проверкой в rc.local, что всё запустилось правильно.

om-nom-nimouse ★★ ()
Ответ на: комментарий от OperaSoftvvare

Я вот не наблюдаю у себя в системе rc.local

touch /etc/rc.local && chmod +x /etc/rc.local

Работает. Гарантия 146%.

om-nom-nimouse ★★ ()
Ответ на: комментарий от OperaSoftvvare

А вообще hostapd в стандартных поставках дистрибутивов, как-то говнясто работает. Имел счастье поднимать тд на ралинках - это адъ, на атеросе лучше, но тоже не идеал. Все проблемы решились в моей генточке, после того как собрал hostapd с патчами от openwrt.

daemonpnz ★★★★★ ()
Ответ на: комментарий от om-nom-nimouse

Есть инструмент инициализации upstart.

Чем мой метод костыль, если это официальная система управления загрузкой? Тут по крайне мере я знаю когда именно отработает сервис и когда он отвалится.

OperaSoftvvare ★★ ()
Ответ на: комментарий от om-nom-nimouse

Рабочий ноутбук в качестве роутера для телефона дома?

И для телефона и для другого ноутбука.

OperaSoftvvare ★★ ()
Ответ на: комментарий от OperaSoftvvare

Ну, вообще-то rc.local несколько старше UpStart'а, но не суть. Если ноутбук рабочий и в качестве роутера выступает только время от времени, то да, такой «костыль» вполне приемлемое решение. Но я бы всё-таки подумал о выделенном роутере для дома.

om-nom-nimouse ★★ ()
Ответ на: комментарий от om-nom-nimouse

Если ноутбук рабочий и в качестве роутера выступает только время от времени, то да, такой «костыль» вполне приемлемое решение.
Но я бы всё-таки подумал о выделенном роутере для дома.


Да как-то все некогда. И я плохо разбираюсь в сетевом оборудовании.

OperaSoftvvare ★★ ()
Ответ на: комментарий от om-nom-nimouse

Например, noscan, позволяет включать режим НТ40 без сканирования соседних сетей, в результате имеем канал шириной 40МГц, даже если рядом есть другие точки и каналы перекрываются. Плюс куча патчей для драйверов на wireless оборудование. Глядеть нужно на openwrt.org, если у них свн поднялся, а то несколько дней лежал.

daemonpnz ★★★★★ ()
Ответ на: комментарий от OperaSoftvvare

Его там нет. Только в опенврт патчах, и в апстрим я думаю не примут, ибо, ЕМНИП, противоречит стандарту 802.11n

daemonpnz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.