Привет! Может ли shell-скрипт ждать подключение например на 80 порту
также как в языках программирования циклы while for
Мне нужно настроить доступ в инет на уровне пользователей
есть идея.
>Привет! Может ли shell-скрипт ждать подключение например на 80 порту
>также как в языках программирования циклы while for
>Мне нужно настроить доступ в инет на уровне пользователей
>есть идея.
ну вопервых, в шелл тоже есть циклы : man shа вовторых, ты хочешь сокет на шелле писать :)? такого еще не видел...
или я не понял твою идею :)
>>Привет! Может ли 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
>>>Привет! Может ли 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 приспособить, но тут толком не подскажу...
>>>>Привет! Может ли 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 приспособить, но тут толком
>не подскажу...
Спасибо!
Ты в точости описал что нужно, но моя проблема что я не могу перейти на практический уровень
perl это здорово я его изучаю
если можешь понаблюдай за этой темой я буду её развиватьтак как примерно выглядит такой скрипт
не думай я не халявщик
>>>>>Привет! Может ли 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 приспособить, но тут толком
>>не подскажу...
>Спасибо!
>Ты в точости описал что нужно, но моя проблема что я не
>могу перейти на практический уровень
>perl это здорово я его изучаю
> если можешь понаблюдай за этой темой я буду её развивать
>
>так как примерно выглядит такой скрипт
>не думай я не халявщик
А как быть с теми кто уже разрешён
по умолчанию они будут перенаправлятся
>>perl это здорово я его изучаю
>> если можешь понаблюдай за этой темой я буду её развивать
>>
>>так как примерно выглядит такой скрипт
>>не думай я не халявщик
>А как быть с теми кто уже разрешён
>по умолчанию они будут перенаправлятся
надо правила разрешения (ACCEPT) ставить до перенаправления всех скопом, в том числе и для тех, кто разрешен изначально. разница в том, что последних никто не будет удалять...
>>>perl это здорово я его изучаю
>>> если можешь понаблюдай за этой темой я буду её развивать
>>>
>>>так как примерно выглядит такой скрипт
>>>не думай я не халявщик
>>А как быть с теми кто уже разрешён
>>по умолчанию они будут перенаправлятся
>надо правила разрешения (ACCEPT) ставить до перенаправления всех скопом, в том числе
>и для тех, кто разрешен изначально. разница в том, что последних
>никто не будет удалять...понял