>>>Привет! Может ли shell-скрипт ждать подключение например на 80 порту
>>>также как в языках программирования циклы while for
>>>Мне нужно настроить доступ в инет на уровне пользователей
>>>есть идея.
>>
>>
>>ну вопервых, в шелл тоже есть циклы : man sh
>>
>>а вовторых, ты хочешь сокет на шелле писать :)? такого еще не
>>видел...
>>или я не понял твою идею :)
>Ну ты подколол
>Суть такая
>1. shell-cкрипт ждёт на 80 порту
>2. пользователь открывает броузер
>3. shell-скрипт перенаправляет iptables c 80 на любой где ждёт apache
>
> со страничкой опять shell или perl-cкрипт регистрации
> пользователей имя пароль и время
>отключения при бездействии
>4. скрипт сравнивает можно или нет с каким-нибудь файлом можно /etc/passwd
> затем если можно то тотже скрипт может определить IP
>пользователя
> и выполнить команду
>iptables -t nat -A -s IP -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx
>
>5. а также время отключения при бездействии передать в команду at
>iptables -t nat -D -s IP -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx
>
>
>понимаю это ужас но пока не могу поставить SQUID
это не ужас, это изврат какой-то :)
уж лучше сквид поставь... не так страшен черт...
уж если извращаться, то:
зачем делать шелл-скрипт вообще?
а если так:
пусть все пользователи изначально перенаправлены на Апач, на нем твоя cgi дает форму ввода пароля, пользователь вводит свои логин/пароль, cgi-шка решает пускать или не пускать, при решении "пускать" она дает нужное правило в iptables типа iptables -t nat A -s IP -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx
для отмены правила по таймауту запустить отдельный скриптик, который смотрит счетчик нужного правила, если тот не изменился за N минут/секунд, то давать отрубающее правило.
возможны вариации:
1) отрубающий скриптик можно повесить в памяти либо вызывать по крону
2) отрубающий скриптик запускать как отдельный экземпляр на каждого пользователя либо один могучий скрипт, который может следить за всеми пользователями сам.
все это вполне делается на Перле и никакого слежения за сокетами не надо...
еще можно попробовать для слежения за сокетами inetd/xinetd приспособить, но тут толком не подскажу...